【问题标题】:Constructor of Spring Session Scope Bean is invoked during Startup and Twice启动和两次调用Spring Session Scope Bean的构造函数
【发布时间】:2013-07-29 13:07:41
【问题描述】:

基于 Spring manual

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

我有一个属于会话范围的课程。我观察到构造函数在应用程序启动期间第一次调用,即使没有HTTPSession。第二次是在创建 HTTPSession 期间。仅当有会话时,我如何才能延迟 ScopedProxyMode.TARGET_CLASS 的 bean 实例化?我试过用@Lazy 注释但没有效果。

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

【问题讨论】:

    标签: spring session proxy aop


    【解决方案1】:

    您要么采用CGLIB 代理的副作用,要么通过使目标类实现一个使用JDK 动态代理的接口(如果您拥有该类)来更改为ScopedProxyMode.INTERFACE。 JDK动态代理和CGLib的区别见https://stackoverflow.com/a/10664208/418439

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2015-03-19
      • 2012-02-05
      • 1970-01-01
      相关资源
      最近更新 更多