小工具知识网

当前位置: 首页 > 行业知识 > 【Spring高级】第3讲 Bean的生命周期

行业知识

【Spring高级】第3讲 Bean的生命周期

2026-11-13 17:07:17 来源:互联网转载

目录

  • 基本的生命周期
  • 后处理器
  • ���结

    基本的生命周期

    为了演示生命周期的过程,我们直接使用 SpringApplication.run()方法,他会直接诶返回一个容器对象。

    ()
    import org.springframework.boot.SpringApplication;import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplicationpublic class BeanLifecycleTest {    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(BeanLifecycleTest.class, args);        context.close();    }}

    然后定义一个Bean,如下:

    import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;@Componentpublic class LifeCycleBean {    public LifeCycleBean() {        System.out.println("构造方法");    }    /**     * 依赖注入方法     * 当参数是一个对象时,可以直接注入     * 但是如果是String类型,则需要使用@Value,找到环境变量JAVA_HOME     *     * @param home     */    @Autowired    public void autowired(@Value("${JAVA_HOME}") String home) {        System.out.println("依赖注入");    }  /**     *  @PostConstruct 用来标记 bean 初始化完成后的回调方法     */    @PostConstruct    public void init() {        System.out.println("初始化");    }  /**     * @PreDestroy 用来标记 bean 销毁前的回调方法     */    @PreDestroy    public void destory() {        System.out.println("销毁");    }}

    上面的LifeCycleBean我们定义了构造方法、初始化方法、依赖注入方法、销毁方法。

    ()

    启动应用,打印如下:

    构造方法依赖注入初始化2024-02-29 22:53:29.169  INFO 39870 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''2024-02-29 22:53:29.182  INFO 39870 --- [           main] c.c.demo02.chapter03.BeanLifecycleTest   : Started BeanLifecycleTest in 1.724 seconds (JVM running for 7.593)2024-02-29 22:53:29.191  INFO 39870 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]销毁

    上面就可以看出整个流程。

    后处理器

    除了基本的生命周期,下面看下加上后处理器后的流程。

    import org.springframework.beans.BeansException;import org.springframework.beans.PropertyValues;import org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor;import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor;import org.springframework.stereotype.Component;@Componentpublic class MyBeanPostProcessor implements InstantiationAwareBeanPostProcessor, DestructionAwareBeanPostProcessor {    @Override    public void postProcessBeforeDestruction(Object bean, String beanName) throws BeansException {        if (beanName.equals("lifeCycleBean")) {            System.out.println("

上一篇:java web简答(极其重要)

下一篇:r星服务器更新怎么关闭?