Spring 高级 初始化与销毁
2022/8/28 23:24:57
本文主要是介绍Spring 高级 初始化与销毁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一 初始化
1、简介
Spring 提供了多种初始化手段,除了 @PostConstruct,@Bean(initMethod) 之外,还可以实现 InitializingBean 接口来进行初始化,如果同一个 bean 用了以上手段声明了 3 个初始化方法,那么它们的执行顺序是
- @PostConstruct 标注的初始化方法
- InitializingBean 接口的初始化方法
- @Bean(initMethod) 指定的初始化方法
2、代码演示
package com.mangoubiubiu.show.a07; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.InitializingBean; import javax.annotation.PostConstruct; @Slf4j public class Bean1 implements InitializingBean { @PostConstruct public void init(){ log.info("PostConstruct init 初始化1"); } public void init2(){ log.info("Bean init init2 初始化2"); } @Override public void afterPropertiesSet() throws Exception { log.info("InitializingBean 初始化2"); } }
package com.mangoubiubiu.show.a07; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; @SpringBootApplication public class A07Application { public static void main(String[] args) { ConfigurableApplicationContext run = SpringApplication.run(A07Application.class); run.close(); } @Bean(initMethod = "init2") public Bean1 bean1(){ return new Bean1(); } }
二 销毁
1、简介
与初始化类似,Spring 也提供了多种销毁手段,执行顺序为
- @PreDestroy 标注的销毁方法
- DisposableBean 接口的销毁方法
- @Bean(destroyMethod) 指定的销毁方法
2、代码演示
package com.mangoubiubiu.show.a07; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; @Slf4j public class Bean2 implements DisposableBean { @PreDestroy public void destroy1(){ log.info("PreDestroy 销毁"); } public void destroy2(){ log.info("Bean 初始化1"); } @Override public void destroy() throws Exception { log.info("DisposableBean 销毁2"); } }
package com.mangoubiubiu.show.a07; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; @SpringBootApplication public class A07Application { public static void main(String[] args) { ConfigurableApplicationContext run = SpringApplication.run(A07Application.class); run.close(); } // @Bean(initMethod = "init2") // public Bean1 bean1(){ // return new Bean1(); // } @Bean(destroyMethod = "destroy") public Bean2 bean2(){ return new Bean2(); } }
三 面试重点
初始化和销毁方法的执行顺序一样,先执行扩展,再执行接口方式的初始化,再执行Bean注解内方法的初始化
这篇关于Spring 高级 初始化与销毁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南