多環境配置
在一般開發過程中如果調試都在本地進行,則可以設置一個多環境配置,在本地與線上配置間來回切換。
springcloud默認會訪問的配置文件名是application.properties,
我們如果要創建多環境的配置文件的話,文件名格式應為:application-{profile}.properties
其中的{profile}用來標識不同的環境,如application-native.properties文件可以用來配置本地環境、application-prod.properties文件可以用來配置生產環境。
springcloud中通過“spring.profiles.active”屬性來指定{profile},如spring.profiles.active=native,則使用的是application-native.properties配置文件。
設置“spring.profiles.active”屬性的方法有兩種:
1、通過eclipse的-D設置系統參數。
找到Config(控制中心)和Eureka(注冊中心)的main函數,右鍵點擊:
將spring.profiles.active=native這項屬性設置直接通過-D注入系統參數。
2、將此屬性寫入入口application.properties文件中。
建立本地配置中心
配置中心分為兩部分組成:客戶端和服務端。
服務端是單獨的服務,需要注冊到注冊中心中。
而客戶端則是存在於各個其他服務中的。
配置中心的服務端既可以將配置文件保存在遠程的git倉庫中,也可以將這些配置文件保存在本地,因為平常開發用本地配置中心較多,此次主要講本地配置中心的搭建。
服務端
先建立配置中心的啟動入口:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer; @EnableConfigServer @SpringBootApplication public class ConfigServer { public static void main(String[] args) throws Exception { SpringApplication.run(ConfigServer.class, args); } }
其pom文件中只需要添加以下依賴即可:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
配置文件application.properties如下:
#配置中心端口 server.port=8887 spring.application.name=config-server logging.config=classpath:log4j2.xml spring.profiles.active=native #申明本地配置文件的存放位置 spring.cloud.config.server.native.searchLocations=file:D:\\etc\\native #注冊中心 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ #刷新時,關閉安全驗證 management.security.enabled=false #開啟消息跟蹤 spring.cloud.bus.trace.enabled=true
啟動后,此服務端會被注冊到注冊中心。
客戶端
客戶端存在於各個服務中,只需要在需要的服務項目中創建一個bootstrap.properties配置文件,即可從配置中心服務端獲取相關配置。
bootstrap.properties:
#配置中心的地址 spring.cloud.config.uri=http://localhost:8887/ #對應的是配置文件規則中的{application}部分 spring.cloud.config.name=native #對應的是配置文件規則中的{profile}部分,可以是多個,用逗號隔開。 spring.cloud.config.profile=common,mysql,activemq #對應的是配置文件規則中的{label}部分 spring.cloud.config.label=master
通過客戶端的bootstrap.properties配置文件可以看出,其實里面就寫了兩種東西:
spring.cloud.config.uri是配置中心地址,用來定位配置中心。
其余的三個是“配置文件規則”,用來定位“具體的配置文件”。
我們再來講一下,什么是“配置文件規則”:
我們之前在講配置中心服務端的時候,定義了一個spring.cloud.config.server.native.searchLocations=file:D:\\etc\\native參數
這個硬盤路徑里裝的都是具體的配置文件,而每個客戶端要獲取的也是這些配置文件。具體的文件例如下圖所示:
由圖中我們可看出,里面所有的文件的命名規則都遵循:{application}-{profile}.properties
所以我們客戶端bootstrap.properties文件中的spring.cloud.config.name=native參數,實際上是為了匹配到這些配置文件的{application}前綴,
所以spring.cloud.config.profile=common,mysql,activemq參數匹配的就是{profile}后綴了。
所以上面實例的配置中心客戶端實際上只會拿到native-common.properties、native-mysql.properties、native-activemq.properties這三個配置文件。