首頁 Java java教程 怎麼在springboot自訂Starter

怎麼在springboot自訂Starter

May 28, 2023 pm 03:25 PM
springboot starter

自訂Starter命名規則

注意artifactId的命名規則,Spring官方Starter通常命名為spring-boot-starter-{name}如spring-boot-starter -web, Spring官方建議非官方Starter命名應遵循{name}-spring-boot-starter的格式, 如mybatis-spring-boot-starter。這裡建立的專案的artifactId為helloworld-spring-boot-starter

#開發Starter步驟

  • #建立Starter項目

  • 定義Starter需要的設定(Properties)類別

  • #編寫自動配置類別

  • ##編寫spring.factories檔案載入自動配置類別
  • 編寫設定提示檔spring-configuration-metadata.json(不是必須的)
具體流程


建立配置類別


@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的載入規則
    • #value 指的是Properties的哪個欄位
    • havingValue指的是設定value是什麼值的時候載入Configuration
    • matchIfMissing 指的是當value配置的欄位沒有配置時的預設值
    @Bean 配置自動注入的bean
  • springboot特有的常見的條件依賴註解有:
    • @ConditionalOnBean,只有當目前上下文中存在某個bean時,才會實例化這個Bean。
    • @ConditionalOnClass,某個class位於類別路徑上,才會實例化這個Bean。
    • @ConditionalOnExpression,當表達式為true的時候,才會實例化這個Bean。
    • @ConditionalOnMissingBean,只有在目前上下文中不存在某個bean時,才會實例化這個Bean。
    • @ConditionalOnMissingClass,某個class在類別路徑上不存在的時候,才會實例化這個Bean。
    • @ConditionalOnNotWebApplication,不是web應用程式時才會實例化這個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會預設掃描跟啟動類別平級的包,如果我們的Starter跟啟動類不在同一個主套件下,需要透過設定spring.factories檔案來生效

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ai.base.boot.influxdb.InfluxdbAutoConfiguration
登入後複製

以上是怎麼在springboot自訂Starter的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Springboot怎麼整合Jasypt實現設定檔加密 Springboot怎麼整合Jasypt實現設定檔加密 Jun 01, 2023 am 08:55 AM

Springboot怎麼整合Jasypt實現設定檔加密

怎麼在SpringBoot中使用Redis實現分散式鎖 怎麼在SpringBoot中使用Redis實現分散式鎖 Jun 03, 2023 am 08:16 AM

怎麼在SpringBoot中使用Redis實現分散式鎖

SpringBoot怎麼整合Redisson實現延遲隊列 SpringBoot怎麼整合Redisson實現延遲隊列 May 30, 2023 pm 02:40 PM

SpringBoot怎麼整合Redisson實現延遲隊列

SpringBoot與SpringMVC的比較及差別分析 SpringBoot與SpringMVC的比較及差別分析 Dec 29, 2023 am 11:02 AM

SpringBoot與SpringMVC的比較及差別分析

springboot讀取檔案打成jar包後存取不到怎麼解決 springboot讀取檔案打成jar包後存取不到怎麼解決 Jun 03, 2023 pm 04:38 PM

springboot讀取檔案打成jar包後存取不到怎麼解決

SpringBoot怎麼自訂Redis實作快取序列化 SpringBoot怎麼自訂Redis實作快取序列化 Jun 03, 2023 am 11:32 AM

SpringBoot怎麼自訂Redis實作快取序列化

Springboot+Mybatis-plus不使用SQL語句進行多表新增怎麼實現 Springboot+Mybatis-plus不使用SQL語句進行多表新增怎麼實現 Jun 02, 2023 am 11:07 AM

Springboot+Mybatis-plus不使用SQL語句進行多表新增怎麼實現

springboot怎麼取得application.yml裡值 springboot怎麼取得application.yml裡值 Jun 03, 2023 pm 06:43 PM

springboot怎麼取得application.yml裡值

See all articles