Spring Boot 擴充套件分析
阿新 • • 發佈:2018-11-08
一.Spring Boot 擴充套件分析之ApplicationContextInitializer
說明
在printBanner之後呼叫.在refresh()方法之前呼叫.
使用
建立實現介面類.將該類按下面使用方式:
1.run之前將物件直接加入到application.例如:
public static void main(String[] args) { SpringApplication application = new SpringApplication(StartApplication.class); application.addInitializers(new MyApplicationContextInitializer()); application.run(args); }
2.在配置檔案application.properties檔案中加入
context.initializer.classes=com.demo.framework.security.common.MyApplicationContextInitializer
3.在META-INF/spring.factories中配置.例如
org.springframework.context.ApplicationContextInitializer=\ com.demo.framework.security.common.MyApplicationContextInitializer
二.Spring Boot 擴充套件分析之ApplicationRunner
和CommandLineRunner
說明:
全部初始化完了之後的回撥
使用:
1.實現ApplicationRunner
或者CommandLineRunner介面.把該類納入spring容器中即可
2.同時注入多個例項時,可通過@order(1)註解或者實現org.springframework.core.Ordered;介面控制先後順序.order中的值越小.越先執行.最終排序原理為:
AnnotationAwareOrderComparator.sort(runners);
兩個介面的區別和用處
1.ApplicationRunner提供ApplicationArguments args.是springboot對main方法中引數封裝之後的引數(解析好了.以key-value形式存在的.方便處理)
2.CommandLineRunner提供main方法中String... args .是原始的引數沒有做任何處理.直接就是字串.不方便處理