如何设置Spring会话范围bean的属性名?
给定一个配置了会话作用域的Springbean,例如:如何设置Spring会话范围bean的属性名?,spring,spring-mvc,spring-webflow,Spring,Spring Mvc,Spring Webflow,给定一个配置了会话作用域的Springbean,例如: @Component @Scope(proxyMode=ScopedProxyMode.TARGET_CLASS,value=WebApplicationContext.SCOPE_SESSION) public class SomeBean { } 有没有办法控制Spring在http会话中存储bean的名称 默认情况下,spring使用会话键scopedTarget.someBean是否可以向注释中添加任何内容以明确指定会话中的属性名
@Component
@Scope(proxyMode=ScopedProxyMode.TARGET_CLASS,value=WebApplicationContext.SCOPE_SESSION)
public class SomeBean {
}
有没有办法控制Spring在http会话中存储bean的名称
默认情况下,spring使用会话键scopedTarget.someBean
是否可以向注释中添加任何内容以明确指定会话中的属性名称?我会使用:
@Component (value="mySpecialName")
@Scope (value="session")
你不能。
scopedTarget
部分是在Spring中创建作用域代理时硬编码的。因此,如果不重写框架的某些部分,这是不可能的
该名称在中硬编码,用于委派到
使用作用域代理是框架内部的一个事实。您可能希望使用它在会话中存储某些内容,并在页面或类似的内容中检索这些内容。不要,只公开将委托给适当作用域实例的常规bean 这不起作用,组件的id为“mySpecialName”,但在会话中存储bean的属性仍然是scopedTarget.mySpecialName。我真的想控制http会话中存储会话范围内安装的属性。我已将答案更改为包含@Scope。在我的代码中,我不需要设置proxyMode。如果不重新实现Spring提供的
SessionScope
,我就不需要设置proxyMode。会话范围的bean是供Spring使用的,它们不是用来在会话中存储东西,而是在页面(或其他任何页面)中获取它们以显示信息。