spring cloud(五、配置中心)
阿新 • • 發佈:2018-11-21
在分散式系統中,由於服務數量巨多,為了方便服務配置檔案統一管理,實時更新,所以需要分散式配置中心元件。在Spring Cloud中,有分散式配置中心元件spring cloud config ,它支援配置服務放在配置服務的記憶體中(即本地),也支援放在遠端Git倉庫中。
一、設定一個配置中心(eureka-config)
類似註冊中心,引入spring-cloud-config-server,spring-cloud-starter-netflix-eureka-server依賴
註冊中心和配置中心可以為同一個
啟動類:
@SpringBootApplication @EnableEurekaServer public class EurekaConfigApplication { public static void main(String[] args) { SpringApplication.run(EurekaConfigApplication.class, args); } }
配置檔案:
server:
port: 8889
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
二、配置連線(config-server)
連線配置檔案管理的地方
引入spring-cloud-starter-netflix-eureka-server和spring-cloud-config-server依賴
啟動類:
@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
配置檔案:
spring.application.name=config-server server.port=8888 spring.cloud.config.server.git.uri=https://github.com/forezp/SpringcloudConfig/ spring.cloud.config.server.git.searchPaths=respo spring.cloud.config.label=master spring.cloud.config.server.git.username= your username spring.cloud.config.server.git.password= your password eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
三、使用配置檔案(config-client)
引入spring-cloud-starter-config和spring-cloud-starter-netflix-eureka-server依賴
啟動類:
@SpringBootApplication
@EnableEurekaClient
@RestController
@RefreshScope
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
@Value("${foo}")
String foo;
@RequestMapping(value = "/hi")
public String hi(){
return foo;
}
}
配置檔案(配置檔名必須是bootstrap.properties):
spring.application.name=config-client
spring.cloud.config.label=master
spring.cloud.config.profile=dev
#spring.cloud.config.uri= http://localhost:8888/
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
server.port=8881
結果: