這篇文章主要介紹了springboot微服務(wù)自定義starter原理的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
撫順網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),撫順網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為撫順1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個(gè)售后服務(wù)好的撫順做網(wǎng)站的公司定做!
使用spring boot開發(fā)微服務(wù)后,工程的數(shù)量大大增加(一定要按照領(lǐng)域來切,不要一個(gè)中間件客戶端包一個(gè)),讓各個(gè)jar從開發(fā)和運(yùn)行時(shí)自包含成了一個(gè)重要的內(nèi)容之一。spring boot starter就可以用來解決該問題(沒事啟動(dòng)時(shí)別依賴于applicationContext.getBean獲取bean進(jìn)行處理,依賴關(guān)系太折騰,有時(shí)候在復(fù)雜系統(tǒng)中解決此事比較麻煩,需要修改開源框架代碼才能實(shí)現(xiàn),反過來修改開源源碼后,維護(hù)也是個(gè)麻煩事)。言歸正傳,說說自定義starter。首先請熟悉spring boot的核心理念,不然容易為了starter而starter,這種情況太多了。
創(chuàng)建一個(gè)maven項(xiàng)目,在pom文件中添加如下依賴:
創(chuàng)建properties屬性類,用于讀取屬性(當(dāng)然可選,如果一開始沒有按照spring boot autoconfig的套路來,改起來還是挺費(fèi)勁的,但是一旦這么做了,就會想,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配置此注解可以自動(dòng)導(dǎo)入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)建自動(dò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文件夾下面新建一個(gè)META-INF文件,并在下面創(chuàng)建spring.factories文件,將4中的配置類進(jìn)行注冊。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xxx.HelloServiceAutoConfiguration
6.新建一個(gè)springboot項(xiàng)目,在pom文件中添加剛剛打包的jar的坐標(biāo)。
7.使用@Autowired訪問接口。
@SpringBootApplication@RestControllerpublic 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注解導(dǎo)入一個(gè)@Configuration類,或者在一處集中維護(hù)ComponentScan的所有路徑,使用autoconfigure starter可以讓應(yīng)用明顯實(shí)現(xiàn)的更加自包含和解耦。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“springboot微服務(wù)自定義starter原理的示例分析”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!