Java Spring MVC。是否可以通过调用 "new" 来覆盖单例(或会话)范围的 bean?
Java Spring MVC. Is this possible to overwrite singleton (or session) scoped bean by calling "new"?
我正在通过尝试创建一个简单但实用的网页来学习 Spring MVC 框架。
我想知道是否可以通过调用 "new" 运算符来覆盖会话 bean...
我已经创建了引用当前用户的会话范围 bean。如果用户未登录,默认 bean 将与访客参数一起使用。
<bean id="currentUser" class="pl.home.models.User" scope="session">
<aop:scoped-proxy />
</bean>
然后,在我的控制器中,我输入了以下代码:
@Autowired @Qualifier("currentUser")
protected User user;
当用户尝试登录时,我想通过调用覆盖用户实例:
user = new User(email, password);
以上代码只会覆盖用户实例 "locally"。 Spring 容器内的 bean 实例将保持不变。
是否可以覆盖 Spring 容器中的用户实例?或者我的方法完全错了?
谢谢,Mariusz
基本上我通过 Java EE 解决了它 HttpSession
你可以使用相同的方法。用户登录成功后创建一个 currentUser 对象并将其设置为 HttpSession
,如下所示:
public void loginPost(HttpServletRequest request){
//After sucessfull login
User currentUser=initializeCurrentUser();
HttpSession session=request.getSession();
session.setAttribute(SessionToken.NAME, currentUser);
}
如果不是登录,则使用默认用户设置初始化 currentUser 并设置为会话。如果你想知道 clusterring 你可以将这个 currentUser 保存到 db 并将 recordId 设置为 session 并在需要时查询它。
我正在通过尝试创建一个简单但实用的网页来学习 Spring MVC 框架。
我想知道是否可以通过调用 "new" 运算符来覆盖会话 bean...
我已经创建了引用当前用户的会话范围 bean。如果用户未登录,默认 bean 将与访客参数一起使用。
<bean id="currentUser" class="pl.home.models.User" scope="session">
<aop:scoped-proxy />
</bean>
然后,在我的控制器中,我输入了以下代码:
@Autowired @Qualifier("currentUser")
protected User user;
当用户尝试登录时,我想通过调用覆盖用户实例:
user = new User(email, password);
以上代码只会覆盖用户实例 "locally"。 Spring 容器内的 bean 实例将保持不变。
是否可以覆盖 Spring 容器中的用户实例?或者我的方法完全错了?
谢谢,Mariusz
基本上我通过 Java EE 解决了它 HttpSession
你可以使用相同的方法。用户登录成功后创建一个 currentUser 对象并将其设置为 HttpSession
,如下所示:
public void loginPost(HttpServletRequest request){
//After sucessfull login
User currentUser=initializeCurrentUser();
HttpSession session=request.getSession();
session.setAttribute(SessionToken.NAME, currentUser);
}
如果不是登录,则使用默认用户设置初始化 currentUser 并设置为会话。如果你想知道 clusterring 你可以将这个 currentUser 保存到 db 并将 recordId 设置为 session 并在需要时查询它。