使用Session Scoped Bean

时间:2010-06-08 20:40:11

标签: java spring-mvc

以下代码返回null:

AController.java

    private MyAppUser getMyAppUser(HttpSession session) {
        MyAppUser myAppUser = (MyAppUser) session.getAttribute("myAppUserManager");
        return myAppUser;
    }

我也试过这个:

AController.java

@Autowired
MyAppUser myAppUser;

尽管我在上下文中有以下内容:

<bean id="myAppUserManager" class="com.myapp.profile.MyAppUser" scope="session"/>

这对我没有任何意义,“myAppUser”bean是一个绝对永远不会为null的bean,我需要能够从控制器引用它,我不需要它在服务或存储库中,只是控制器,但它似乎没有存储在会话中,用例非常简单,但我无法找到错误的底部,或者想出一个好的解决方法

1 个答案:

答案 0 :(得分:2)

会话范围的bean在会话中不可用。 Spring会管理它们,并将它们存储在会话中,但不能以手动方式将它们删除。

如果要使用scoped bean,可以将其连接到其他bean,就像任何其他bean一样。但是有一些事情需要注意 - 请参阅here。实质上,如果要将会话范围的bean A连接到bean B,那么bean B也必须是会话范围的(或请求范围的),除非使用范围代理 - 请参阅前面的链接有关如何做到这一点的信息。