springboot - Constructor、@Autowired、@PostConstruct分析

1、Constructor 构造方法

2、@Autowired 依赖注入

3、@PostConstruct 在依赖注入完成后被自动调用

4、 三者的顺序:

      从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入。所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入是发生在A的构造方法执行完之后的。

如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。

所以: Constructor >> @Autowired >> @PostConstruct

 1 public Class AAA {
 2     @Autowired
 3     private BBB b;
 4     
 5     public AAA() {
 6         System.out.println("此时b还未被注入: b = " + b);
 7     }
 8  
 9     @PostConstruct
10     private void init() {
11         System.out.println("@PostConstruct将在依赖注入完成后被自动调用: b = " + b);
12     }
13 }

 

posted @ 2018-08-03 15:23  UniqueColor  阅读(306)  评论(0编辑  收藏  举报