Spring Cloud Config爲服務端和客戶端提供了分佈式系統的外部化配置支持。配置服務器爲各應用的全部環境提供了一箇中心化的外部配置。java
部署分佈式配置管理分爲如下4部git
spring.application.name=config-server # config server port server.port=8887 # use file system backend spring.profiles.active=native # url of file system where configuration files stored spring.cloud.config.server.native.searchLocations=file:////root/config-repo
Spring Cloud Config提供本地存儲配置的方式。咱們只須要設置屬性spring.profiles.active=native
,Config Server會默認從應用的src/main/resource
目錄下檢索配置文件。也能夠經過spring.cloud.config.server.native.searchLocations=
file:////root/config-repo性來指定配置文件的位置,這樣的話就能夠將全部的配置文件統一管理。固然也能夠從git上獲取。spring
目錄config-repo用於存放全部的配置文件bootstrap
spring.application.name=config-server # config server port server.port=8887 # use file system backend spring.profiles.active=native # url of file system where configuration files stored spring.cloud.config.server.native.searchLocations=file:////root/config-repo # 配置服務註冊中心 eureka.client.serviceUrl.defaultZone=http://test:111@localhost:8761/eureka/,http://test:111@1ocalhost:8762/eureka/ # 在eurake註冊的名稱是IP地址+端口 eureka.instance.preferIpAddress=true eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
將config-servefr註冊服務該怎麼作呢?很簡單在對應的pom文件中添加以下配置:服務器
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> </dependencies>
spring.application.name=zuul spring.cloud.config.profile=configInfo spring.cloud.config.label=devs eureka.client.serviceUrl.defaultZone=http://test:111@localhost:8761/eureka/,http://test:111@localhost:8762/eureka/ # 在eurake註冊的名稱是IP地址+端口 eureka.instance.preferIpAddress=true eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port} spring.cloud.config.discovery.enabled=true spring.cloud.config.discovery.serviceId=config-server
這裏須要格外注意:上面這些屬性必須配置在bootstrap.properties
中,config部份內容才能被正確加載。由於config的相關配置會先於application.properties
,而bootstrap.properties
的加載也是先於application.properties
。app
其中,經過eureka.client.serviceUrl.defaultZone
參數指定服務註冊中心,用於服務的註冊與發現,再將spring.cloud.config.discovery.enabled
參數設置爲true,開啓經過服務來訪問Config Server的功能,最後利用spring.cloud.config.discovery.serviceId
參數來指定Config Server註冊的服務名。這裏的spring.application.name
和spring.cloud.config.profile
用來定位config-server的資源。分佈式
客戶端對應的pom文件中須要添加以下配置this
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> </dependencies>
spring.datasource.url=jdbc\:db2\://localhost\:50000/hrxtdev spring.datasource.username= spring.datasource.password= spring.datasource.driver-class-name=com.ibm.db2.jcc.DB2Driver\ config.server.url=http://localhost:8080 server.port =8180 server.context-path =/log
@Component @ConfigurationProperties(prefix = "config.server") public class ConfigServerProperties{ private String url; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }