欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot啟動(dòng)前執(zhí)行方法的四種方式總結(jié)

 更新時(shí)間:2022年01月10日 11:12:53   作者:一只豬啊啊  
這篇文章主要給大家介紹了關(guān)于springboot啟動(dòng)前執(zhí)行方法的四種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

第一種  @PostConstruct注解

@Configuration
public class Test1 {
    @Autowired
    private Environment environment;
    @PostConstruct
    public void test(){
        String property = environment.getProperty("aaa.bbb");
        System.out.println("test1"+property);
    }
}

第二種  實(shí)現(xiàn)InitializingBean接口

@Configuration
public class Test2 implements InitializingBean {
    @Autowired
    private Environment environment;
    @Override
    public void afterPropertiesSet() throws Exception {
        String property = environment.getProperty("aaa.bbb");
        System.out.println("test2"+property);
    }
}

第三種 實(shí)現(xiàn)BeanPostProcessor接口

@Configuration
public class Test3 implements BeanPostProcessor {
    @Autowired
    private Environment environment;
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        String property = environment.getProperty("aaa.bbb");
        System.out.println("test3"+property);
        return bean;
    }
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        return bean;
    }
}

第四種  在啟動(dòng)類run之前執(zhí)行方法

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        System.out.println("test4");
        SpringApplication.run(DemoApplication.class, args);
    }
}

當(dāng)然這是不可取的

他們運(yùn)行的優(yōu)先級(jí)是

啟動(dòng)類前->BeanPostProcessor->@PostConstruct->InitializingBean

值得注意的是第三種方式,他可以讓實(shí)現(xiàn)類里的方法提前執(zhí)行

同樣的使用@PostConstruct的兩個(gè)類

@Configuration
public class Test1 {
    @PostConstruct
    public void test(){
        System.out.println("test1");
    }
}

第一個(gè)沒有實(shí)現(xiàn)BeanPostProcessor接口

@Configuration
public class Test3 implements BeanPostProcessor {
    @Autowired
    private Environment environment;
    @PostConstruct
    public void  test(){
        System.out.println("test3");
    }
}

第二個(gè)實(shí)現(xiàn)了BeanPostProcessor接口,但是沒有重寫他的方法

打印結(jié)果如下

可以看到同樣是使用了@PostConstruct注解,但是他們的執(zhí)行順序卻截然不同

BeanPostProcessor為每一個(gè)spring維護(hù)的對(duì)象調(diào)用前后做操作,具體可以參照這篇博文

www.dbjr.com.cn/article/234143.htm

知道了啟動(dòng)時(shí)的加載順序,對(duì)我們做一些初始化工作有幫助。

總結(jié)

到此這篇關(guān)于springboot啟動(dòng)前執(zhí)行方法的四種方式的文章就介紹到這了,更多相關(guān)springboot啟動(dòng)前執(zhí)行方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論