postconstruct 和 ApplicationContextAware 的执行顺序
时间: 2024-03-08 14:43:39 浏览: 82
在介绍postconstruct和ApplicationContextAware的执行顺序之前,先简单介绍一下它们的作用。
1. @PostConstruct注解:
@PostConstruct注解是javax.annotation包下的一个注解,用于标记一个方法,在对象创建完成后,初始化之前执行。通常用于执行一些初始化操作,比如初始化成员变量、加载配置文件等。
2. ApplicationContextAware接口:
ApplicationContextAware接口是Spring框架提供的一个接口,用于获取Spring容器的上下文对象ApplicationContext。通过实现该接口,可以在Bean中获取到Spring容器的上下文对象,从而可以使用容器提供的一些功能,比如获取其他Bean、获取环境变量等。
关于它们的执行顺序,可以简单总结如下:
1. 实现ApplicationContextAware接口的Bean的setApplicationContext方法会在Bean创建完成后被调用,用于将ApplicationContext对象注入到Bean中。
2. 在Bean创建完成后,会执行被@PostConstruct注解标记的方法,用于执行一些初始化操作。
所以,执行顺序是先执行setApplicationContext方法,然后再执行@PostConstruct注解标记的方法。
相关问题
PostConstruct 执行顺序
@PostConstruct注解修饰的方法会在服务器加载Servlet时运行,在构造函数之后执行,init()方法之前执行。通常情况下,PostConstruct的执行顺序如下:Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注解的方法)。这意味着在该类的构造方法执行完毕后,依赖注入完成后,才会执行被@PostConstruct修饰的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [@PostConstruct的作用,以及加载先后顺序](https://blog.csdn.net/libralee233/article/details/122681608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [InitializingBean、BeanPostProcessor、init-method、@PostConstruct执行先后顺序](https://blog.csdn.net/Asa_Prince/article/details/118342171)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [java面试题20道(适合工作1~3年)(附答案).docx](https://download.csdn.net/download/yijian1992/11490469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
springboot @PostConstruct执行顺序
@PostConstruct注解用于在Spring容器实例化Bean之后,初始化Bean之前执行的方法。它的执行顺序如下:
1. 首先,Spring容器会实例化Bean对象。
2. 然后,Spring容器会执行Bean对象的构造函数。
3. 接下来,Spring容器会自动注入@Autowired标记的对象。
4. 最后,Spring容器会执行被@PostConstruct注解标记的方法。
总结起来,@PostConstruct注解的方法会在Bean对象的构造函数执行完毕、自动注入完成之后执行。
范例:
```java
import javax.annotation.PostConstruct;
public class MyBean {
public MyBean() {
System.out.println("构造函数");
}
@PostConstruct
public void init() {
System.out.println("@PostConstruct方法");
}
}
```
在上面的例子中,当Spring容器实例化MyBean对象时,会先执行构造函数,然后执行@PostConstruct注解标记的init()方法。
阅读全文