Spring Session Scope Bean的构造函数在Startup和Twice期间调用

时间:2013-07-29 13:07:41

标签: spring session proxy aop

基于Spring manual

  

代理对象的构造函数将被称为两次。这是一个   CGLIB代理模型的自然结果,即子类   为每个代理对象生成。对于每个代理实例,两个   创建对象:实际代理对象和实例   实现建议的子类。

我有一个会话范围的类。我观察到构造函数在应用程序启动期间第一次被称为 ,即使没有HTTPSession。第二次是在创建HTTPSession期间。如果有会话,我怎么能用ScopedProxyMode.TARGET_CLASS延迟bean实例化?我尝试使用@Lazy注释,但没有效果。

@Component
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class WorkspaceImpl implements Workspace, Serializable {

1 个答案:

答案 0 :(得分:1)

您可以使用CGLIB代理的副作用,或者通过使目标类实现使用JDK动态代理的接口(如果您拥有该类)来更改为ScopedProxyMode.INTERFACE。在https://stackoverflow.com/a/10664208/418439

中查看JDK动态代理和CGLib之间的区别