Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置Spring会话范围bean的属性名?_Spring_Spring Mvc_Spring Webflow - Fatal编程技术网

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

如何设置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是否可以向注释中添加任何内容以明确指定会话中的属性名

给定一个配置了会话作用域的Springbean,例如:

@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使用的,它们不是用来在会话中存储东西,而是在页面(或其他任何页面)中获取它们以显示信息。