转载

Spring @PostConstruct 、@Autowired和Construct 顺序

然后就会思考问题,这个注释是修饰初始化之后需要执行的方法,那么它和@Autowired、构造函数的执行顺序是什么呢?(当然注释中已经说明了PostConstruct注释用于在完成依赖项注入之后)

@Service

public class BeanA {

@Autowired

private BeanB beanB;

public BeanA() {

System.out.println("这是Bean A 的构造方法");

}

@PostConstruct

private void init() {

System.out.println("这是BeanA的 init 方法");

beanB.testB();

}

}

@Service

public class BeanB {

@PostConstruct

private void init() {

System.out.println("这是BeanB 的init 方法");

}

public BeanB() {

System.out.println("这是Bean B的 构造方法");

}

void testB() {

System.out.println("这是Bean B 的 testB 方法");

}

}

启动后输出:

这是Bean A 的构造方法 
这是Bean B的 构造方法 
这是BeanB 的init 方法 
这是BeanA的 init 方法 
这是Bean B 的 testB 方法

所以得到结论: 构造方法 > @Autowired > @PostConstruct
原文  http://www.blogjava.net/ZouYonghui/archive/2020/04/09/435331.html
正文到此结束
Loading...