12

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

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

有什么方法可以控制 Spring 将 bean 存储在 http 会话中的名称吗?

默认情况下使用会话键scopedTarget.someBean的弹簧接缝有什么我可以添加到注释中以显式指定会话中的属性名称吗?

4

2 回答 2

4

我会使用:

@Component (value="mySpecialName")
@Scope (value="session")
于 2012-05-14T03:32:19.380 回答
3

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

该名称被硬编码在ScopedProxyBeanDefinitionDecoratorwhich 委托给ScopedProxyUtils.

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

于 2019-11-28T10:47:06.340 回答