【SpringBoot】啓動前執行的幾種方式

如果餓了就吃,困了就睡,渴了就喝,人生就太無趣了
源碼地址:https://github.com/keer123456789/springbootstudy/tree/master/befor_run_demo


第一種:@PostConstruct

@Configuration
public class MyConfig_1 {
    @PostConstruct
    public void test() {
        System.out.println("===================Service 1====================");
    }
}

啓動運行項目:
在這裏插入圖片描述

第二種 實現InitializingBean接口

@Configuration
public class MyConfig_2 implements InitializingBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("===================Service 2====================");
    }
}

啓動運行項目:
在這裏插入圖片描述

第三種 實現BeanPostProcessor接口

@Configuration
public class MyConfig_3 implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("===================Service 3====================");
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        return bean;
    }
}

啓動運行項目:(目前輸出多次的Service3,每太搞清楚,歡迎指導,會繼續學習)
在這裏插入圖片描述

第四種 在啓動類run之前執行方法

這種方法不太可取!

@SpringBootApplication
public class BeforRunDemoApplication {

    public static void main(String[] args) {
        System.out.println("===================Service 5====================");
        SpringApplication.run(BeforRunDemoApplication.class, args);
    }
}

啓動項目:
在這裏插入圖片描述

四種方式的啓動順序

啓動類前->BeanPostProcessor->@PostConstruct->InitializingBean

值得注意的是第三種方式,他可以讓實現類裏的方法提前執行

@Configuration
public class MyConfig_1 {
    @PostConstruct
    public void test() {
        System.out.println("===================Service 1====================");
    }
}

@Configuration
public class MyConfig_4 implements BeanPostProcessor {
    @PostConstruct
    public void  test(){
        System.out.println("===================Service 4====================");
    }
}

啓動項目:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章