簡體   English   中英

Spring-cglib代理在類層次結構中的行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM