天天看點

SpringBean生命周期及類加載器簡述類加載器Springboot Aware接口

Spring bean 從jvm加載class初使化至程序結束bean消亡全局流程大緻如下,同步的相關的簡單驗證

SpringBean生命周期及類加載器簡述類加載器Springboot Aware接口

public class TestBean implements InitializingBean, DisposableBean {

    public TestBean() {

        System.out.println("1: constructor ----> 構造方法");

    }

    @PostConstruct

    public void postConstruct()

    {

        System.out.println("3: @PostConstruct/postConstruct ");

    @PreDestroy

    public void PreDestroy()

        System.out.println("7: @PreDestroy/PreDestroy ");

    public void initMethod() {

        System.out.println("5: initMethod指定的initMethod方法");

    public void destroyMethod() {

        System.out.println("9: destroyMethod指定的destroyMethod方法");

    @Override

    public void destroy() throws Exception {

        System.out.println("8: DisposableBean/destroy");

    public void afterPropertiesSet() throws Exception {

        System.out.println("4: InitializingBean/afterPropertiesSet......");

}

public class TestBeanPostPorcesser implements BeanPostProcessor {

  

    @Override

    public Object postProcessBeforeInitialization(Object bean, String beanName)

        throws BeansException {

        if(beanName.equals("testBean")) {

            System.out.println("2: BeanPostProcessor/postProcessBeforeInitialization: " + beanName);

        }

        return bean;

    }

  

    @Override

    public Object postProcessAfterInitialization(Object bean, String beanName)

        throws BeansException {

        if(beanName.equals("testBean")) {

            System.out.println("6: BeanPostProcessor/postProcessAfterInitialization: " + beanName);

        }

        return bean;

    }

}      
@Configuration

  public class TestConfig {

  

    @Bean(initMethod = "initMethod",destroyMethod = "destroyMethod")

    public TestBean testBean() {

        return new TestBean();

    }

  

    @Bean

    public TestBeanPostPorcesser testBeanPostPorcesser() {

        return new TestBeanPostPorcesser();

    }

}      
********************************************************************      
1: constructor ----> 構造方法      
2: BeanPostProcessor/postProcessBeforeInitialization: testBean      
3: @PostConstruct/postConstruct       
4: InitializingBean/afterPropertiesSet......      
5: initMethod指定的initMethod方法      
6: BeanPostProcessor/postProcessAfterInitialization: testBean      
2021-03-20 22:53:18.404  INFO 7492 --- [           main]       
o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService       
7: @PreDestroy/PreDestroy       
8: DisposableBean/destroy      
9: destroyMethod指定的destroyMethod方法      
Process finished with exit code 130      

類加載器

Ø  類加載器用來加載其他類,類加載器本身無需加載,嵌套在虛拟機上即 BootStrap

Ø  類加載器将類的位元組碼檔案從硬碟加載進記憶體

Ø  系統預設三個主要類加載器,每個類負責加載特定位置:  BootStrap, ExtClassLoader,AppClassLoade(SystemCLassLoade) 

SpringBean生命周期及類加載器簡述類加載器Springboot Aware接口

Springboot Aware接口

SpringBean生命周期及類加載器簡述類加載器Springboot Aware接口