有這麼一個工具類
@Service
@Data
public class A {
public Client client;
@PostConstruct
public void init(){
client = xxxxx;
}
}
在另一個類B中,注入該類並使用,是ok的。
a.client.xxx
某次提交後,就死活 a.client = null了,必須得 a.getClient() 方法得到。
發現是因為 A 中定義了一個方法,並用了 @Async 註解。
@Async 註解加上後, 另一個類 B 中 a 是一個 cglib 實現的被加強的代理對象,裏面的成員變量沒有被正確初始化,都是 null,只能通過 get 方法通過反射獲取到成員變量。
而沒有加上前,a 是一個普通的被 spring 容器管理的 bean,只有需要AOP增強功能時,才被代理。