给定一个配置了会话范围的spring bean,例如:
@Component
@Scope(proxyMode=ScopedProxyMode.TARGET_CLASS,value=WebApplicationContext.SCOPE_SESSION)
public class SomeBean {
}
有没有办法控制Spring在http会话中存储bean的名称?
默认情况下,使用会话密钥的弹簧接口scopedTarget.someBean是否可以添加到注释中以在会话中显式指定属性名称?
答案 0 :(得分:4)
我会用:
@Component (value="mySpecialName")
@Scope (value="session")
答案 1 :(得分:2)
您不能。 scopedTarget
部分在Spring的作用域代理创建中进行了硬编码。因此,如果不重写框架的某些部分,根本不可能实现。
该名称在ScopedProxyBeanDefinitionDecorator
中硬编码,该名称委托给ScopedProxyUtils
。
您使用范围代理的事实是框架的内部内容。您可能想要使用它在会话中存储某些内容,并在页面或类似内容中检索它。不用,只公开常规bean,它将委托给适当的作用域实例。