新建config工程,導入依賴,config工程須要做爲一個服務註冊到eureka上,這裏我使用了父工程統一管理依賴,就不用聲名版本了java
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies>
啓動類添加註解git
@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer
config工程的配置文件spring
spring: application: name: config-server cloud: config: server: git: uri: https://gitee.com/liuyifengmvc/cloud-config username: 用戶名 password: 密碼 basedir: 這裏能夠不用填寫(有默認值),填寫了的話碼雲的的配置文件會被拉取到你指定的目錄下 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/
新建一個工程,導入依賴數據庫
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>
其餘工程直接經過config這個服務拉取配置文件,這個配置文件的spring.application.name+profile拼接起來的名字就是你要拉取的具體的配置文件名,這裏拉取的就是order-dev.ymlbootstrap
spring: application: name: order cloud: config: discovery: service-id: CONFIG-SERVER enabled: true enabled: true //這裏默認爲true能夠不用配置 profile: dev
還有就是客戶端的配置文件名儘可能使用bootstrap.yml命名,這個是最早加載的配置文件,避免遇到一些啓動時的錯誤mvc
好比當該客戶端涉及到對數據訪問層的操做,app
應用啓動時會自動加載數據庫的一些配置,url
這時你的配置文件須要從碼雲拉取,spa
這時就會出現錯誤,因此須要使用bootstrap.yml來管理配置文件拉取.net
另外我本身也採坑了就是
我是用application.yml配置去eureka拉取config-server獲取配置文件出現的問題
c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
Connect Timeout Exception on Url - http://localhost:8888. Will be trying the next url if available
Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/product/dev":
Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect
個人config-server地址是在8080端口他卻去8888端口找,8888端口時是當客戶端鏈接不上eureka時默認找的端口
因而我把application.yml更名爲bootstrap.yml,結果就成功了,這應該就是配置文件加載的順序的緣由吧