gpt4 book ai didi

java - Spring-cglib 代理类层次结构中的行为

转载 作者:行者123 更新时间:2023-12-01 14:53:08 29 4
gpt4 key购买 nike

我有两个类

 @Component
@Scope(proxyMode=ScopedProxyMode.TARGET_CLASS,value="session")
public class Child extends Base{
}

@Component
@Scope(proxyMode=ScopedProxyMode.TARGET_CLASS,value="session")
public class Base{
private UserVO user;

public UserVO getUser(){
return user;
}
public void setUser(UserVO usr){
this.user = usr;
}
}

I call the following method
public class SomeClass{
@autowired
private Child child;
public void someMethod(){
child.setUser(new UserVO());
System.out.println(child.getUser());
}
}

上面的system.out打印null。我哪里出错了。请帮忙。这是 cglib 的工作方式吗?如果是这样,解决方法是什么谢谢

最佳答案

您很可能会得到 null,因为在调用 someMethod 时没有 HttpSession。

这是 aop 范围代理的预期行为。请注意,aop-scoped-proxy 实际上是一个单例,它尝试从配置的范围中检索 taget 对象,或者在在每个方法调用中中找不到任何对象时创建一个新对象。

因此,如果 HttpSession 不存在,aop-scoped-proxy 会将所有调用重定向到新创建的对象。

即:

aopScopedProxy.setUser -- > new User().setUser()
aopScopedProxy.getUser ---> new User().getUser()

这似乎是你的问题。

关于java - Spring-cglib 代理类层次结构中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629697/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com