springboot自定義Starter的具體流程
自定義Starter命名規(guī)則
注意artifactId的命名規(guī)則,Spring官方Starter通常命名為spring-boot-starter-{name}如 spring-boot-starter-web, Spring官方建議非官方Starter命名應(yīng)遵循{name}-spring-boot-starter的格式, 如mybatis-spring-boot-starter。這里創(chuàng)建的項目的artifactId為helloworld-spring-boot-starter
開發(fā)Starter步驟
- 創(chuàng)建Starter項目
- 定義Starter需要的配置(Properties)類
- 編寫自動配置類
- 編寫spring.factories文件加載自動配置類
- 編寫配置提示文件spring-configuration-metadata.json(不是必須的)
具體流程
創(chuàng)建配置類
@ConfigurationProperties 來定義配置的前綴
@EnableConfigurationProperties(InfluxdbProperties.class) @ConfigurationProperties(prefix = "spring.influxdb") public class InfluxdbProperties { private String username; public String getDatabase() { return database; } public void setDatabase(String database) { this.database = database; } }
編寫自動配置類
- @EnableConfigurationProperties配置依賴的屬性類
- @ConditionalOnProperty 配置Configuration的加載規(guī)則
- value 指的是Properties的哪個字段
- havingValue指的是配置value是什么值的時候加載Configuration
- matchIfMissing 指的是當(dāng)value配置的字段沒有配置時的默認(rèn)值
- @Bean 配置自動注入的bean
- springboot特有的常見的條件依賴注解有:
- @ConditionalOnBean,僅在當(dāng)前上下文中存在某個bean時,才會實例化這個Bean。
- @ConditionalOnClass,某個class位于類路徑上,才會實例化這個Bean。
- @ConditionalOnExpression,當(dāng)表達(dá)式為true的時候,才會實例化這個Bean。
- @ConditionalOnMissingBean,僅在當(dāng)前上下文中不存在某個bean時,才會實例化這個Bean。
- @ConditionalOnMissingClass,某個class在類路徑上不存在的時候,才會實例化這個Bean。
- @ConditionalOnNotWebApplication,不是web應(yīng)用時才會實例化這個Bean。
- @AutoConfigureAfter,在某個bean完成自動配置后實例化這個bean。
- @AutoConfigureBefore,在某個bean完成自動配置前實例化這個bean。
@Configuration @Order(1) @EnableConfigurationProperties(InfluxdbProperties.class) @ConditionalOnClass(InfluxdbProperties.class) @ConditionalOnProperty(prefix = "spring.influxdb", value = "use-influxdb", havingValue="true" ,matchIfMissing = false) public class InfluxdbAutoConfiguration { private String scanEntitySuffix = "Entity.class"; @Bean @ConditionalOnMissingBean(AiInfluxdbTemplate.class) @Order(Ordered.HIGHEST_PRECEDENCE) public AiInfluxdbTemplate AiInfluxdbTemplate(InfluxdbProperties influxdbProperties){ return new AiInfluxdbTemplate(influxdbProperties); } }
編寫spring.factories文件
Spring Boot會默認(rèn)掃描跟啟動類平級的包,如果我們的Starter跟啟動類不在同一個主包下,需要通過配置spring.factories文件來生效
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.ai.base.boot.influxdb.InfluxdbAutoConfiguration
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- spring boot 自定義starter的實現(xiàn)教程
- Spring boot創(chuàng)建自定義starter的完整步驟
- spring boot微服務(wù)自定義starter原理詳解
- springboot自定義starter實現(xiàn)過程圖解
- springboot自定義redis-starter的實現(xiàn)
- SpringBoot自動配置之自定義starter的實現(xiàn)代碼
- 使用SpringBoot自定義starter的完整步驟
- Java SpringBoot自定義starter詳解
- SpringBoot如何自定義starter
- SpringBoot自定義start詳細(xì)圖文教程
相關(guān)文章
java 刪除數(shù)組元素與刪除重復(fù)數(shù)組元素的代碼
在java中刪除數(shù)組元素與過濾重復(fù)數(shù)組元素我們都會需要去遍歷數(shù)組然后根據(jù)我們設(shè)置的值或方法進(jìn)行去除數(shù)組2013-10-10SpringBoot+Email發(fā)送郵件的實現(xiàn)示例
Spring?Boot提供了簡單而強(qiáng)大的郵件發(fā)送功能,本文主要介紹了SpringBoot+Email發(fā)送郵件的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-03-03如何通過RabbitMq實現(xiàn)動態(tài)定時任務(wù)詳解
工作中經(jīng)常會有定時任務(wù)的需求,常見的做法可以使用Timer、Quartz、Hangfire等組件,這次想嘗試下新的思路,使用RabbitMQ死信隊列的機(jī)制來實現(xiàn)定時任務(wù),下面這篇文章主要給大家介紹了關(guān)于如何通過RabbitMq實現(xiàn)動態(tài)定時任務(wù)的相關(guān)資料,需要的朋友可以參考下2022-01-01ServletContext讀取web資源_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了ServletContext讀取web資源,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07java驗證用戶是否已經(jīng)登錄 java實現(xiàn)自動登錄
這篇文章主要介紹了java驗證用戶是否已經(jīng)登錄,java實現(xiàn)自動登錄,感興趣的小伙伴們可以參考一下2016-04-04