一、创建配置中心
1、依赖:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hx.demo</groupId> <artifactId>service-config</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-config</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Edgware.SR3</spring-cloud.version> </properties> <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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2、配置:
server: port: 8888 spring: application: name: service-config cloud: config: server: git: uri: https://github.com/houxi1234/demo/ searchPaths: respo username: password: label: master eureka: client: serviceUrl: defaultZone: http://localhost:9000/eureka/
3、启动项配置
@SpringBootApplication @EnableConfigServer public class ServiceUserApplication { public static void main(String[] args) { SpringApplication.run(ServiceUserApplication.class, args); } }
4、gihub文件添加
5、启动后访问:http://localhost:8888/config-client/dev
响应数据为JSON格式,如下图读取到了配置信息,配置中心搭建成功
二、创建客户端
1、依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hx.demo</groupId> <artifactId>client-config</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>client-config</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Edgware.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <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> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2、配置:
注意这里配置文件应该用:bootstrap.yml
特别注意:github中配置文件命名需要遵循以下规则
http请求地址和资源文件映射如下:
- /{application}/{profile}[/{label}]
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
配置信息:特别注意,这里配置出错服务启动会报错找不到配置文件信息
spring.application.name 服务名称一定和github上相对应
如:github上配置文件名为:config-client-dev.properties
那么:spring.application.name=config-client
spring.cloud.config.label 指明远程仓库的分支
spring.cloud.config.profile- dev开发环境配置文件
- test测试环境
- pro正式环境
具体配置如下
eureka: client: serviceUrl: defaultZone: http://localhost:9000/eureka/ server: port: 9007 spring: application: name: config-client cloud: config: label: master profile: dev uri: http://localhost:8888/
因为服务已经注册:所以使用以下配置最优
eureka: client: serviceUrl: defaultZone: http://localhost:9000/eureka/ server: port: 9007 spring: application: name: config-client cloud: config: profile: dev discovery: enabled: true serviceId: service-config
3、启动项
@SpringBootApplication @EnableEurekaClient public class ServiceUserApplication { public static void main(String[] args) { SpringApplication.run(ServiceUserApplication.class, args); } }
4、添加接口
@RestController @RequestMapping("/user/") @RefreshScope public class UserController { @Value("${username}") private String name; @RequestMapping("sayHello") public String getUser(@RequestBody String say){ String result = say + " hi " + name; System.out.println(result); return result; } }
5、访问:
到此,完成了一个简单的配置读取demo
如要实现配置动态改变,还需要配置使用 消息总线(Spring Cloud Bus)技术。
最后:github地址:https://github.com/houxi1234/demo.git