6 配置中心Config
6.1 部署配置中心
6.1.1 配置中心的作用
帮助解决在多应用部署在不同的设备的时候,统一管理配置文件的作用。
6.1.2 创建配置中心
在互联网“码云”开源平台创建配置中心项目
“码云”的网址:
https://gitee.com/
在项目某个应用中,我们一般都会读取项目的application.yml配置文件。因此我们可以在码云平台的项目配置中心中创建“应用名.yml”的配置文件,并将应用中Spring的主配置文件application.yml中的内容赋值粘贴进去。
6.1.3 创建配置中心项目
生成pom.xml的项目配置文件
<?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.marshal</groupId>
<artifactId>spring-cloud-configuration-center</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-cloud-configuration-center</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.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>Finchley.SR1</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-netflix-eureka-client</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>
6.1.4 修改application配置文件
将resources/application.properties主配置文件名“application.properties”修改为“application.yml”。
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://gitee.com/StevenMarshal/Marshal-Configuration-Center
username: 1353453332@qq.com
password: wang@826137
server:
port: 9100
6.1.5 编写入口类代码
在包com.marshal.springcloudconfigurationcenter入口类SpringCloudConfigurationCenterApplication:
package com.marshal.springcloudconfigurationcenter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableDiscoveryClient
// 启用配置中心
@EnableConfigServer
public class SpringCloudConfigurationCenterApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudConfigurationCenterApplication.class, args);
}
}
6.1.6 启动服务验证注册中心
注册中心要求访问的格式为:
http://localhost:9100/[ClientID]-[profile].yml|properties|json
ClientID —— 相当于服务的名称,例如:“member”
profile —— 环境配置文件,不同环境下的配置“dev/prd”
http://localhost:9100/member-dev.yml
6.1.7 改造应用服务端
以应用服务“spring-cloud-sctsjy-member”为例,将该服务应用项目的application.yml删除掉,并创建bootstrap.yml
spring:
# 应用名称是必须的
application:
name: member
cloud:
config:
discovery:
# 表示开启配置中心
enabled: true
service-id: config
profile: dev
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
在应用服务应用服务“spring-cloud-sctsjy-member”的pom.xml文件中增加关于注册中心客户端的依赖包:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>