springcloud_config教程(1)--快速入门

x33g5p2x  于2021-12-20 转载在 其他  
字(6.9k)|赞(0)|评价(0)|浏览(742)

一.为什么使用spring-cloud-config

  在springboot项目中,配置文件通常是放在项目中的application.properties或者application.yml中,如果有多个项目,就有多个配置文件,在分布式项目中,有时需要对配置进行集中管理,公司目前使用的是zookeeper,缺点是更新配置后需要重启项目才能获取最新的配置,而且没有版本记录。而spring-cloud-config解决了这个问题,可以将配置文件在git或者svn中集中管理,便于修改和版本控制,并且可以实现更新git中的配置后及时更新到项目中。

二.快速入门

  spring-cloud-config由两部分组成,config-server和config-client。config-server用于从git或者svn中获取配置,是提供配置的服务;config-client就是从config-server中获取配置。

  1.首先创建一个config-server工程,完整的依赖如下:

<?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.lx.springCloudLeran</groupId>
   <artifactId>config-server</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>config-server</name>
   <description>Demo project for Spring Boot</description>

   <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.5.8.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.7</java.version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-config-server</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>Camden.SR6</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>

   <repositories>
      <repository>
         <id>spring-milestones</id>
         <name>Spring Milestones</name>
         <url>https://repo.spring.io/milestone</url>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
      </repository>
   </repositories>
</project>

  在入口类上加上@EnableConfigServer,表示这是一个config-server。

    在git中新建一个工程,用于存放配置文件。在工程的根目录创建一个文件夹,我的文件夹名称是myconfig,文件夹中有个文件叫做config-dev.properties,这里可以根据运行环境创建多个文件。文件内容如下图:

  在config-server工程的配置文件中,作如下配置:

server.port=9999
#git仓库地址
spring.cloud.config.server.git.uri=git地址
#git登录帐号
spring.cloud.config.server.git.username=xxxx
#git登录密码
spring.cloud.config.server.git.password=xxxxxx
#仓库中的相对地址,即文件夹,不可缺省。多个文件夹用逗号隔开,可以使用*表示git下所有路径
spring.cloud.config.server.git.searchPaths=myconfig
#git分支
spring.cloud.config.label=master
#clone下来的配置文件保存在本地的位置,文件夹不存在会自动创建。连不上git时会使用这里的配置
spring.cloud.config.server.git.basedir=E:\\111\\

  此时运行config-server项目,就会获取到git仓库中的配置,并且保存在设定的 E:\111\ 目录中。

  可通过如下方式访问浏览器获取属性:

<br>http://localhost:9999/config-dev.properties<br><br>http://localhost:9999/config/dev/<br><br>http://localhost:9999/config/dev/master<br>

  2. 创建config-client工程,完整的pom如下:

<?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.lx.springCloudLearn</groupId>
   <artifactId>config-client</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>config-client</name>
   <description>Demo project for Spring Boot</description>
<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.5.8.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.7</java.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-config</artifactId>
      </dependency>
      <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>
     </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Camden.SR6</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>

   <repositories>
      <repository>
         <id>spring-milestones</id>
         <name>Spring Milestones</name>
         <url>https://repo.spring.io/milestone</url>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
      </repository>
   </repositories>

</project>

  创建一个controller用于测试,使用@Value注入git中配置的属性:  

  然后在配置文件中配置如下,注意,config-client中的配置文件名称必须是bootstrap.properties:

spring.application.name=config-client
server.port=8881
#配置文件名称,即 "-" 之前的
spring.cloud.config.name=config
#配置文件profile,即"-"之后的
spring.profiles.active=dev
#config-server地址
spring.cloud.config.uri=http://localhost:9999/
#配置文件所在分支
spring.cloud.config.label=master
#配置缓存目录,避免配置丢失.如下的配置会将配置文件缓存在当前工程目录的config-repo文件夹,没有则自动新建
spring.cloud.config.server.git.basedir=config-repo

  3.验证。

  此时,开启config-server和config-client工程,访问localhost:8881/test , 读取到了git中的配置:

  通过在git中配置不同环境下的配置文件,如application-dev.properties,application-prod.properties,来配置开发环境/生产环境下的参数,并且在需要使用配置的工程中,也就相当于文中的config-client,指定

spring.profiles.active的值,就可以根据运行环境获取到对应的配置了。

相关文章