java Spring Cloud企業快速開發架構之Spring Boot Starter的介紹及使用
Spring Boot 的便利性體現在,它簡化了很多煩瑣的配置,這對於開發人員來說是一個福音,透過引入各種 Spring Boot Starter 包可以快速搭建出一個專案的腳手架 。
目前提供的 Spring Boot Starter 包有:
spring-boot-starter-web:快速構建基於 Spring MVC 的 Web 專案,使用 Tomcat 做預設嵌入式容器。
spring-boot-starter-data-redis:操作 Redis。
spring-boot-starter-data-mongodb:操作 Mongodb。
spring-boot-starter-data-jpa:操作 Mysql。
spring-boot-starter-activemq:操作 Activemq。
……
自動配置非常方便,當我們要操作 Mongodb 的時候,只需要引入 spring-boot-starter-data-mongodb 的依賴,然後配置 Mongodb 的連結資訊 spring.data.mongodb.uri=mongodb://localhost/test 就可以使用 MongoTemplate 來運算元據,MongoTemplate 的初始化工作全部交給 Starter 來完成。
自動配置麻煩的是當出現錯誤時,排查問題的難度上升了。自動配置的邏輯都在 Spring Boot Starter 中,要想快速定位問題,就必須得了解 Spring Boot Starter 的內部原理。接下來我們自己動手來實現一個 Spring Boot Starter。
Spring Boot Starter專案建立
建立一個專案 spring-boot-starter-demo,pom.xml 配置程式碼如下所示。
建立一個配置類,用於在屬性檔案中配置值,相當於 spring.data.mongo 這種形式,程式碼如下所示。
再定義一個 Client,相當於 MongoTemplate,裡面定一個方法,用於獲取配置中的值,程式碼如下所示。
自動建立客戶端
一個最基本的 Starter 包定義好了,但目前肯定是不能使用 UserClient,因為我們沒有自動構建 UserClient 的例項。接下來開始構建 UserClient,程式碼如下所示。
Spring Boot 會預設掃描跟啟動類平級的包,假如我們的 Starter 跟啟動類不在同一個主包下,如何能讓 UserAutoConfigure 生效?
在 resources 下建立一個 META-INF 資料夾,然後在 META-INF 資料夾中建立一個 spring.factories 檔案,檔案中指定自動配置的類:
Spring Boot 啟動時會去讀取 spring.factories 檔案,然後根據配置啟用對應的配置類,至此一個簡單的 Starter 包就實現了。
使用 Starter
現在可以在其他的專案中引入這個 Starter 包,程式碼如下所示。
引入之後就直接可以使用 UserClient,UserClient 在專案啟動的時候已經自動初始化好,程式碼如下所示。
屬性檔案中配置 name 的值和開啟 UserClient:
訪問 /user/name 就可以返回我們配置的 zhangsan。
使用註解開啟 Starter 自動構建
很多時候我們不想在引入 Starter 包時就執行初始化的邏輯,而是想要由使用者來指定是否要開啟 Starter 包的自動配置功能,比如常用的 @EnableAsync 這個註解就是用於開啟呼叫方法非同步執行的功能。
同樣地,我們也可以透過註解的方式來開啟是否自動配置,如果用註解的方式,那麼 spring.factories 就不需要編寫了,下面就來看一下怎麼定義啟用自動配置的註解,程式碼如下所示。
這段程式碼的核心是 @Import({UserAutoConfigure.class}),透過匯入的方式實現把 UserAutoConfigure 例項加入 SpringIOC 容器中,這樣就能開啟自動配置了。
使用方式就是在啟動類上加上該註解,程式碼如下所示。
使用配置開啟 Starter 自動構建
在某些場景下,UserAutoConfigure 中會配置多個物件,對於這些物件,如果不想全部配置,或是想讓使用者指定需要開啟配置的時候再去構建物件,這個時候我們可以透過 @ConditionalOnProperty 來指定是否開啟配置的功能,程式碼如下所示。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994808/viewspace-2851228/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- (2)java Spring Cloud+Spring boot企業快速開發架構之Spring Cloud版本介紹JavaCloudSpring Boot架構
- java Spring Cloud企業快速開發架構之SpringCloud-Spring Cloud EurekaJavaSpringCloud架構GC
- (7)Spring Boot Starter的介紹及使用Spring Boot
- java Spring Cloud企業快速開發架構之SpringCloud-Eureka的REST API及API擴充套件JavaSpringCloud架構GCRESTAPI套件
- (44)java Spring Cloud企業快速開發架構之Gateway實戰案例限流、熔斷、跨JavaSpringCloud架構Gateway
- 企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUICloudSpring BootMyBatisUI
- java Spring Cloud企業快速開發架構之Ribbon結合RestTemplate實現負載均衡JavaSpringCloud架構REST負載
- (41)java Spring Cloud企業快速開發架構之SpringCloud-Gateway的常用路由斷言工廠JavaSpringCloud架構GCGateway路由
- 五、企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUI之Lua 變數CloudSpring BootMyBatisUI變數
- 11.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 磁碟管理SpringCloud分散式微服務架構Linux
- Java之Spring Cloud概念介紹JavaSpringCloud
- (20)java Spring Cloud企業快速開發架構之SpringCloud-Ribbon自定義負載均衡策略JavaSpringCloud架構GC負載
- 快速開發一個自定義 Spring Boot Starter,並使用它Spring Boot
- 企業快速開發平臺Spring Cloud+Spring Boot+Mybatis之Highcharts 基本餅圖CloudSpring BootMyBatis
- 10.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 使用者和使用者組SpringCloud分散式微服務架構Linux
- 7.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 遠端登入SpringCloud分散式微服務架構Linux
- 十六、企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUI之Lua 檔案 I/OCloudSpring BootMyBatisUI
- Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介Java架構SpringCloud微服務分散式
- 開發一個Spring Boot Starter!Spring Boot
- (1)java Spring Cloud+mybatis企業快速開發架構之微服務是什麼?它的優缺點有哪些?JavaSpringCloudMyBatis架構微服務
- 8.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 檔案基本屬性SpringCloud分散式微服務架構Linux
- Spring Cloud + Spring Boot企業架構之CAS SSO單點登入服務端環境搭建CloudSpring Boot架構服務端
- CAS SSO單點登入客戶端環境搭建之Spring Cloud + Spring Boot 企業架構客戶端CloudSpring Boot架構
- Spring Cloud + Spring Boot 企業架構之CAS SSO單點登入客戶端環境搭建CloudSpring Boot架構客戶端
- 9.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 檔案與目錄管理SpringCloud分散式微服務架構Linux
- 介紹一下Spring Cloud微服務架構SpringCloud微服務架構
- CAS SSO單點登入客戶端環境搭建解析之Spring Cloud + Spring Boot企業架構客戶端CloudSpring Boot架構
- CAS SSO單點登入服務端環境搭建解析之Spring Cloud + Spring Boot企業架構服務端CloudSpring Boot架構
- Spring Cloud + Spring Boot + Mybatis 企業架構之CAS SSO單點登入服務端環境搭建CloudSpring BootMyBatis架構服務端
- Spring Cloud + Spring Boot + Mybatis 企業架構之CAS SSO單點登入客戶端環境搭建CloudSpring BootMyBatis架構客戶端
- Spring Cloud + Spring Boot + Mybatis 企業架構之CAS SSO單點登入服務端環境搭建CloudSpring BootMyBatis架構服務端
- Spring Cloud Alibaba 多租戶 saas 設計的企業開發架構SpringCloud架構
- 快速建立一個spring-boot-starterSpringboot
- java版分散式微服務企業快速架構鴻鵠雲商Spring Boot Spring Cloud B2B2C o2oJava分散式微服務架構Spring BootCloud
- spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- Spring Cloud Spring Boot mybatis分散式微服務雲架構CloudSpring BootMyBatis分散式微服務架構
- 【Java面試】如何理解Spring Boot中的Starter?Java面試Spring Boot
- 建立自己的定製的Spring Boot Starter快速指南Spring Boot