這篇文章主要為大家展示了“spring boot微服務如何自定義starter原理”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“spring boot微服務如何自定義starter原理”這篇文章吧。
創(chuàng)新互聯專注于中大型企業(yè)的成都網站設計、做網站和網站改版、網站營銷服務,追求商業(yè)策劃與數據分析、創(chuàng)意藝術與技術開發(fā)的融合,累計客戶上1000+,服務滿意度達97%。幫助廣大客戶順利對接上互聯網浪潮,準確優(yōu)選出符合自己需要的互聯網運用,我們將一直專注品牌網站建設和互聯網程序開發(fā),在前進的路上,與客戶一起成長!使用spring boot開發(fā)微服務后,工程的數量大大增加(一定要按照領域來切,不要一個中間件客戶端包一個),讓各個jar從開發(fā)和運行時自包含成了一個重要的內容之一。spring boot starter就可以用來解決該問題(沒事啟動時別依賴于applicationContext.getBean獲取bean進行處理,依賴關系太折騰,有時候在復雜系統中解決此事比較麻煩,需要修改開源框架代碼才能實現,反過來修改開源源碼后,維護也是個麻煩事)。言歸正傳,說說自定義starter。首先請熟悉spring boot的核心理念,不然容易為了starter而starter,這種情況太多了。
創(chuàng)建一個maven項目,在pom文件中添加如下依賴:
org.springframework.boot spring-boot-autoconfigure 2.0.0.RELEASE org.springframework.boot spring-boot-maven-plugin
創(chuàng)建properties屬性類,用于讀取屬性(當然可選,如果一開始沒有按照spring boot autoconfig的套路來,改起來還是挺費勁的,但是一旦這么做了,就會想,TMD這才是真正的開發(fā)模式,@Value那套早該丟了)。
@ConfigurationProperties(prefix = "com.xxx") public class HelloServiceProperties { private String name = "james"; private String hobby = "cc"; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } }
@ConfigurationProperties配置此注解可以自動導入application.properties配置文件中的屬性,前提需要指定屬性前綴prefix。
3.創(chuàng)建配置類
public class HelloService { private String name; private String hobby; public String getName() { return "name is " + name; } public String getHobby() { return "hobby is " + hobby; } public void setName(String name) { this.name = name; } public void setHobby(String hobby) { this.hobby = hobby; } }
4.創(chuàng)建自動配置類:
@Configuration @EnableConfigurationProperties(HelloServiceProperties.class) @ConditionalOnClass(HelloServiceConfiguration.class) @ConditionalOnProperty(prefix = "com.xxx", value = "enabled", matchIfMissing = true)@ComponentScan({"com.xxx"}) // 如果bean比較多,一般采用這種方式 public class HelloServiceAutoConfiguration { @Autowired private HelloServiceProperties helloServiceProperties; @Bean // bean比較少、且順序和邏輯有特殊要求的模塊,一般采用這種方式 @ConditionalOnMissingBean(HelloServiceConfiguration.class) public HelloServiceConfiguration helloServiceConfiguration() { HelloService helloService = new HelloService(); helloService.setName(helloServiceProperties.getName()); helloService.setHobby(helloServiceProperties.getHobby()); return helloService; } }
5.在resources文件夾下面新建一個META-INF文件,并在下面創(chuàng)建spring.factories文件,將4中的配置類進行注冊。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xxx.HelloServiceAutoConfiguration
6.新建一個springboot項目,在pom文件中添加剛剛打包的jar的坐標。
7.使用@Autowired訪問接口。
@SpringBootApplication @RestController public class Springboot03Application { @Autowired private HelloService helloService; public static void main(String[] args) { SpringApplication.run(Springboot03Application.class, args); } @RequestMapping("/name") public String getName() { return helloService.getName(); } @RequestMapping("/hobby") public String getHobby() { return helloService.getHobby(); } }
相比原來要使用@Import注解導入一個@Configuration類,或者在一處集中維護ComponentScan的所有路徑,使用autoconfigure starter可以讓應用明顯實現的更加自包含和解耦。
以上是“spring boot微服務如何自定義starter原理”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯網站建設公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯建站www.cdcxhl.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。