[英]Spring-cglib proxy Behaviour in a class hierarchy
我有2節課
@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是這樣工作的嗎?
(非常)有可能因為您在調用someMethod時沒有HttpSession而獲得null。
這是aop范圍代理的預期行為。 請注意,aop-scoped-proxy實際上是一個單例,它嘗試在每個方法調用中從已配置的作用域中檢索taget對象,或者在找不到該對象時創建一個新對象。
因此,如果HttpSession不存在,那么aop-scoped-proxy會將所有調用重定向到一個新創建的對象。
即:
aopScopedProxy.setUser -- > new User().setUser()
aopScopedProxy.getUser ---> new User().getUser()
那似乎是你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.