当前位置:   article > 正文

Spring Bean的生命周期

Spring Bean的生命周期

一个Bean先要经过Java对象创建(也就是通过new关键字创建一个对象),随后根据容器里的配置注入所需的依赖,最后调用初始化回调方法,经过这三个步骤才算完成了Bean的初始化。若不再需要这个Bean,则要进行销毁操作,在正式销毁对象前,会先调用容器的销毁回调方法。

由于Bean的生命周期是交由Spring管理的,所以我们无法像自己控制这些动作时那样任意地在Bean创建后或Bean销毁前增加某些操作。但Spring为我们提供了几种途径,共三种方式。

  1. 实现InitializingBean和DisposableBean接口;
  2. 使用@PostConstruct和@PreDestory注解;
  3. 在<bean/>或@Bean里配置初始化和销毁方法;

我们用代码测试一下第一种方式:

  1. // 创建一个生命周期类,继承InitializingBean, DisposableBean接口
  2. public class SpringLifeCycle implements InitializingBean, DisposableBean {
  3. @Override
  4. public void afterPropertiesSet() throws Exception {
  5. System.out.println("创建Bean后回调...");
  6. }
  7. @Override
  8. public void destroy() throws Exception {
  9. System.out.println("销毁Bean前回调...");
  10. }
  11. }
  1. @Configuration
  2. public class Application {
  3. public static void main(String[] args) {
  4. ApplicationContext ctx = new AnnotationConfigApplicationContext(Application.class);
  5. if (ctx instanceof ConfigurableApplicationContext) {
  6. // 关闭容易,测试销毁Bean
  7. ((ConfigurableApplicationContext) ctx).close();
  8. }
  9. }
  10. @Bean
  11. public SpringLifeCycle hello() {
  12. return new SpringLifeCycle();
  13. }
  14. }

这时我们启动项目

我们已经知道现在SpringLifeCycle类对象已经初始化完成,可以使用了。

我们再测试一下销毁方法,右键运行Application类中的main方法。

发现也成功的在Bean销毁前调用了回调方法。

使用第二种方式也一样:

  1. public class SpringLifeCycle2 {
  2. @PostConstruct
  3. public void initLc() {
  4. System.out.println("初始化...");
  5. }
  6. @PreDestroy
  7. public void destoryLc() {
  8. System.out.println("销毁...");
  9. }
  10. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/106890
推荐阅读
相关标签
  

闽ICP备14008679号