如何设置Spring会话范围bean的属性名称?

时间:2012-05-14 03:04:56

标签: spring spring-mvc spring-webflow

给定一个配置了会话范围的spring bean,例如:

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

有没有办法控制Spring在http会话中存储bean的名称?

默认情况下,使用会话密钥的弹簧接口scopedTarget.someBean是否可以添加到注释中以在会话中显式指定属性名称?

2 个答案:

答案 0 :(得分:4)

我会用:

@Component (value="mySpecialName")
@Scope (value="session")

答案 1 :(得分:2)

您不能。 scopedTarget部分在Spring的作用域代理创建中进行了硬编码。因此,如果不重写框架的某些部分,根本不可能实现。

该名称在ScopedProxyBeanDefinitionDecorator中硬编码,该名称委托给ScopedProxyUtils

您使用范围代理的事实是框架的内部内容。您可能想要使用它在会话中存储某些内容,并在页面或类似内容中检索它。不用,只公开常规bean,它将委托给适当的作用域实例。