1. 配置中心介绍

简单来说,配置中心就是我们来存放各个微服务的配置文件的一个地方。如果没有配置中心,配置文件放在各个微服务中,对于配置的修改,会是一个不小的工程。举例来说,等数据库变化之后,如果没有配置中心,那么需要去各个微服务中修改数据库的配置。但是如果有了配置中心,只需要修改配置中心中的数据库配置文件即可,其他微服务来引用配置中心的配置文件,从而不必再去每个微服务中修改配置文件。

配置中心分为服务端和客户端。服务端用来存放配置文件,客户端是用来读取配置文件的其他微服务。因为注册中心需要最先启动,因此注册中心的配置信息不能保存到配置中心中。

2. 配置中心的编写

2.1 编写之前的准备

了解application.yml和bootstrap.yml文件

首先是加载顺序的不同,bootstrap.yml先加载,application.yml后加载

其次,存放配置信息的性质略有不同,一般而言,在bootstrap.yml中,我们存放系统级的配置信息,一般不用变化的,比如微服务的名字,而application.yml一般存放应用级的信息,有可能会根据需求而变化,比如连接数据库信息。

因此,有了配置中心,我们在其他微服务中使用bootstrap.yml文件。在使用过程中,其实也没必要分这么清楚。

2.2 修改父项目的pom文件

引入配置中心依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
    <version>2.1.4.RELEASE</version>
</dependency>
<!--config 客户端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    <version>2.1.4.RELEASE</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
2.3 新建my-config的Module

如图:

微服务和VUE入门教程(7):配置中心-config_java

2.4 修改config的pom文件
<dependencies>
    <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-web</artifactId>
    </dependency>

    <!--配置中心 服务端-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>

</dependencies>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
2.5 修改application.xml文件
server:
  port: 8804

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8801/eureka/

# 配置微服务名字
spring:
  application:
    name: my-config
#  配置文件保存到本地
  profiles:
    active: native
#    保存位置
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/shared
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

配置中心中的其他微服务的配置文件可以保存到git,svn或本地。为了方便,这次以保存至本地来展示。保存路径为resouces/shared文件夹。

2.6 修改ConfigApplication.java文件
package com.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class ConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

这里只是声明了@EnableConfigServer,并没有加入@EnableDiscoveryClient。因为前者包含了后者,故而引用前者即可。

2.7 新建my-user-dev.xml

在resouces/shared文件夹中新建my-user-dev.xml

#配置端口号
server:
  port: 8802

#注册到注册中心
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8801/eureka/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

这些信息直接复制my-user的配置信息就可以了。

2.8 新建my-batis-dev.xml

这个文件保存连接数据库的信息,也是直接复制my-user配置文件中关于数据库的信息就好。

在以后的开发过程中,其他微服务需要链接数据库时,直接引用这个文件就好。

# 配置微服务名字
spring:
  #  连接数据库
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=UTF-8
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
# mapper保存路径
mybatis:
  mapper-locations: classpath:mappers/*
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
2.9 修改my-user的pom文件

声明这是一个配置中心的客户端

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
2.10 修改my-user的配置文件

删除原来的application.yml文件,新建bootstrap.yml文件(注意名字可不要取错啊!!!!)

# 配置微服务名字
spring:
  application:
    name: my-user

  cloud:
    config:
      uri: http://localhost:8804
      fail-fast: true
      name: my-user, my-mybatis
  profiles:
      active: dev
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

信息是不是少了很多,只剩微服务的名字,还有配置中心的一些信息

cloud-config-uri:配置中心的ip和端口 cloud-config-name:要引用配置文件的前缀

profiles: active 本地文件 dev 后缀是dev

3. 测试

3.1 启动my-eureka,my-zuul
3.2 启动my-config
3.3 重启my-user

微服务和VUE入门教程(7):配置中心-config_配置文件_02

可以当我们启动my-user微服务时,它会自动去配置中心寻找配置文件,从而正常启动。

可以使用登录来验证是否配置文件真正生效,当然也可以使用其他方法来验证配置中心来生效,可以去百度一下。