【发布时间】:2025-12-19 10:40:11
【问题描述】:
我正在尝试根据一个流行的教程在 Spring Security 中实现用户日志记录,并且对 Spring bean 的连接方式有疑问。
下面的类被定义为 Spring Context 中的标准 bean
public class ActiveUserStore {
public List<String> users;
public ActiveUserStore() {
users = new ArrayList<String>();
}
public List<String> getUsers() {
return users;
}
public void setUsers(List<String> users) {
this.users = users;
}
}
以上定义为一个Bean通过
@Bean
public ActiveUserStore activeUserStore(){
return new ActiveUserStore();
}
并且 Bean 正在下面的类中使用,请注意 users.add(user.getUsername());
@Component
public class LoggedUser implements HttpSessionBindingListener {
private String username;
private ActiveUserStore activeUserStore;
public LoggedUser(String username, ActiveUserStore activeUserStore) {
this.username = username;
this.activeUserStore = activeUserStore;
}
public LoggedUser() {}
@Override
public void valueBound(HttpSessionBindingEvent event) {
List<String> users = activeUserStore.getUsers();
LoggedUser user = (LoggedUser) event.getValue();
if (!users.contains(user.getUsername())) {
users.add(user.getUsername());//HOW IS THIS SAVED TO THE ACTIVEUSERSTORE BEAN
}
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
List<String> users = activeUserStore.getUsers();
LoggedUser user = (LoggedUser) event.getValue();
if (users.contains(user.getUsername())) {
users.remove(user.getUsername());//HOW IS THIS SAVED TO THE ACTIVEUSERSTORE BEAN
}
}
我的问题:既然 users 变量属于 ActiveUserStore Bean,那么 Logged User Class 的 valueBound 和 valueUnbound 方法中的下面这行代码如何自动将用户数据保存在 ActiveUserStore Bean 中?
users.add(user.getUsername());
为了清楚起见,我还在上面的代码中标记了这一行。
感谢任何帮助,因为我认为我对 Beans 如何连接和使用的理解可能不清楚,因为我无法理解上述工作。谢谢。
【问题讨论】:
标签: java spring spring-mvc spring-boot javabeans