1

基于 Spring手册

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

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

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

1 回答 1

1

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

于 2013-08-26T07:19:04.380 回答