SpringBoot中懒加载对@PostConstruct的影响
文章目录
Springboot 中不同方式注入Bean先后顺序
在
Spring Boot
中,构造函数、Setter
方法、@Autowired
、@PostConstruct
等方式初始化bean
的执行先后顺序如下:
构造函数执行
- 当
Spring
创建一个bean
实例时,首先会调用构造函数来初始化对象。 - 如果构造函数中有参数,且这些参数对应的
bean
也需要被创建,那么Spring
会先创建这些依赖的bean
,再调用当前bean
的构造函数。
@Autowired
注入(如果在构造函数中)
- 如果构造函数上标注了
@Autowired
,那么在构造函数执行过程中,Spring
会自动注入依赖的bean
。 - 这通常发生在构造函数参数被解析和注入的时候。
Setter 方法执行(如果有依赖注入)
- 在构造函数执行之后,如果有通过
setter
方法进行依赖注入的情况,Spring 会调用相应的 setter 方法来注入依赖的bean
。 - 如果
setter
方法上标注了@Autowired
,那么在调用setter
方法时也会进行自动注入。
@PostConstruct
方法执行
- 一旦
bean
的实例化通过构造函数完成,并且依赖注入(无论是通过构造函数还是setter
方法)也完成后,Spring
会查找标注有@PostConstruct
注解的方法,并执行这些方法。 - 这个阶段通常用于执行一些额外的初始化逻辑,例如配置资源、初始化连接等。
代码实例
import javax.annotation.PostConstruct;
import org.springframework