Spring底层原理学习笔记--第七讲--(初始化与销毁)

初始化与销毁

  • Spring提供了多种初始化和销毁手段
  • 它们的执行顺序

A07Application.java

package com.lucifer.itheima.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 context = SpringApplication.run(A07Application.class,args);
        context.close();
    }

    //输出结果为
//    2023-11-08 19:52:53.870  INFO 55612 --- [           main] com.lucifer.itheima.a07.Bean1            : 初始化1
//    2023-11-08 19:52:53.870  INFO 55612 --- [           main] com.lucifer.itheima.a07.Bean1            : 初始化2
//    2023-11-08 19:52:53.870  INFO 55612 --- [           main] com.lucifer.itheima.a07.Bean1            : 初始化3
    @Bean(initMethod = "init3")
    public Bean1 bean1(){
        return new Bean1();
    }

    //输出结果为
//    2023-11-08 19:56:02.452  INFO 53212 --- [           main] com.lucifer.itheima.a07.Bean2            : 销毁1
//    2023-11-08 19:56:02.452  INFO 53212 --- [           main] com.lucifer.itheima.a07.Bean2            : 销毁2
//    2023-11-08 19:56:02.452  INFO 53212 --- [           main] com.lucifer.itheima.a07.Bean2            : 销毁3
    @Bean(destroyMethod = "destroy3")
    public Bean2 bean2() {
        return new Bean2();
    }
}

Bean1.java

package com.lucifer.itheima.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 init1(){
        log.info("初始化1");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        log.info("初始化2");
    }

    public void init3(){
        log.info("初始化3");
    }
}

Bean2.java

package com.lucifer.itheima.a07;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.DisposableBean;

import javax.annotation.PreDestroy;

@Slf4j
public class Bean2 implements DisposableBean {
    @PreDestroy
    public void destroy1() {
        log.info("销毁1");
    }

    @Override
    public void destroy() throws Exception {
        log.info("销毁2");
    }

    public void destroy3(){
        log.info("销毁3");
    }
}

你可能感兴趣的:(spring,学习,笔记)