有这么一个工具类

@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增强功能时,才被代理。


cashew
9 声望3 粉丝

« 上一篇
mac使用指南