Spring Cloud是現(xiàn)在流行的分布式服務(wù)框架,它提供了很多有用的組件。比如:配置中心、Eureka服務(wù)發(fā)現(xiàn)、消息總線、熔斷機制等。
創(chuàng)新互聯(lián)建站是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信小程序開發(fā),十年建站對成都砂巖浮雕等多個行業(yè),擁有豐富的網(wǎng)站設(shè)計經(jīng)驗。
配置中心在Spring Cloud的眾多組件中是比較基礎(chǔ)的,它提供了配置文件的統(tǒng)一管理,可以很輕松的切換不通的環(huán)境。
它的具體結(jié)構(gòu)如下:
Spring Cloud是建立在Spring Boot基礎(chǔ)上的,Spring Cloud離不開Spring Boot,所以我們的項目都是基于Spring Boot的。
配置文件一般我們放在git上,也好做版本控制。接下來我們講一下配置中心的搭建。
配置中心搭建
首先,引入Spring Boot和Spring Cloud的依賴BOM:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.SR3</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
這里我們需要仔細看一下官方文檔,Spring Cloud的Finchley版本是基于Spring Boot2.0的,在Spring Boot1.5下是不能工作的。而Edgware版本是基于1.5的,在2.0下不能正常工作。這點大家要注意,以免出現(xiàn)不必要的麻煩。
這里我們采用Spring Cloud 的Edgware和Spring Boot的1.5版本。
然后倒入必須的依賴,如下:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies>
最后編寫配置中心的啟動類,如下:
@SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
@EnableConfigServer標(biāo)志著這個服務(wù)是一個配置中心服務(wù),具體的信息在application.properties文件中配置:
#服務(wù)端口 server.port=9000 #配置文件的git地址 spring.cloud.config.server.git.uri=https://github.com/liubo-tech/spring-cloud-properties #配置文件的臨時文件目錄 spring.cloud.config.server.git.basedir=/d:/config-repo
服務(wù)端口和git地址大家都比較明白,第三個是配置臨時文件的目錄。在配置中心被調(diào)用后,配置中心會從git上拉取配置文件,并在本地緩存,這個就是配置緩存的目錄,也可以不配置,使用系統(tǒng)默認的。這樣配置中心就搭好了,也可以通過Nginx搭建集群做的高可用。
訪問配置文件格式的如下:
/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties
其中:
客戶端調(diào)用
以前配置文件都是放在項目中,這使得我們在切換不同環(huán)境時非常麻煩,一些配置的敏感信息也對開發(fā)人員暴露了。
使用統(tǒng)一的配置中心就可以避免這些,讓我們看一看客戶端是如何調(diào)用的。
首先,導(dǎo)入必須依賴的jar包,如下:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> </dependencies>
只要Spring Cloud Config Client的jar在項目的classpath下,它就會在項目啟動時從配置中心獲取配置,通過bootstrap配置文件中的spring.cloud.config.uri屬性指定配置中心。
這使得客戶端的項目必須有一個bootstrap.yml或者bootstrap.properties文件,否則客戶端是不會從配置中心加載配置文件的。
我們創(chuàng)建bootstrap.properties,如下:
#配置中心地址 spring.cloud.config.uri=http://localhost:9000
指定配置中心的地址,上面的例子中,配置中心的端口我們指定9000。我們在application.properties文件中配置應(yīng)用的名稱:
spring.application.name=eg-config
我們應(yīng)用叫作“eg-config”,項目啟動時會從配置中心加載eg-config的文件。接下來我們做個例子,創(chuàng)建一個Bean,并從配置中心注入值
@Component public class MyBean { @Value("${my.name}") private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
其中,name會從配置中心加載屬性my.name。啟動類如下:
@SpringBootApplication public class Application { public static void main(String[] args) { ConfigurableApplicationContext applicationContext = SpringApplication.run(Application.class, args); //獲取bean并打印name字段 MyBean bean = applicationContext.getBean(MyBean.class); System.out.println(bean.getName()); } }
啟動后,控制臺打印的結(jié)果如下:test
這樣配置中心就介紹完了,具體請參考項目示例:https://github.com/liubo-tech/spring-cloud-config。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
網(wǎng)站名稱:SpringCloud之配置中心的搭建
網(wǎng)頁鏈接:http://jinyejixie.com/article36/ijggpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、全網(wǎng)營銷推廣、定制開發(fā)、Google、自適應(yīng)網(wǎng)站、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)