如何在会话中设置对象并在所有控制器中使用它?

时间:2014-04-07 15:56:00

标签: java spring spring-mvc

我有一个主控制器,它充当我的Spring MVC 4.0.3应用程序的入口点。这个想法是从数据库加载一次用户及其配置文件(首选项),然后在会话中设置它们,以便在整个应用程序中轻松重用它们。

我是Spring MVC的新手,我来自Struts 1.3.5,我习惯于这样做:

<bean define id="currentUser" name="currentUser"
             type="my.entity.bean" scope="session" />

我正在使用Thymeleaf作为前端(观点)。

是否存在任何类型的AutoWiring可能性,因此它可以自动连接到所有控制器,而无需在任何地方提供一些样板代码?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

定义一个CurrentUser Spring bean,其范围为“session”,并将其注入所有控制器:

@Component
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class CurrentUser {

    private UserInformation userInformation;

    public void setUserInformation(UserInformation userInformation) {
        this.userInformation = userInformation;
    }

    public UserInformation getUserInformation() {
        return userInformation;
    }
}

“入口点”控制器将设置用户信息,其他人将获得它。

但要注意“入口点”。用户应该能够为任何页面添加书签并访问您的webapp而无需通过入口点控制器。验证过滤器或拦截器是一个更好的主意。