zoukankan      html  css  js  c++  java
  • Springboot集成Spring-cloud-config配置中心

    背景:

    由于这个项目本身是springboot骨架, 项目不是很复杂,不想使用springcloud全家桶(部件太多,管理麻烦), 但是配置的内容根据生产和测试并不同, 故需要采用可切换的配置文件方式实现, 需要弄一个配置中心来实现,此处选择Spring-Cloud-Config来实现。

    1. 项目结构

    2. 父pom.xml增加如下配置依赖:

    <dependencyManagement>
    <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Greenwich.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>fastjson</artifactId>
                    <version>1.2.40</version>
                </dependency>
                <dependency>
                    <groupId>org.mybatis.spring.boot</groupId>
                    <artifactId>mybatis-spring-boot-starter</artifactId>
                    <version>1.3.0</version>
                </dependency>
    </dependencyManagement>

    3. 配置中心服务端文件目录如下:

    pom.xml配置:

    <?xml version="1.0"?>
    <project
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
            xmlns="http://maven.apache.org/POM/4.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.eunke</groupId>
            <artifactId>eunke-sg56</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </parent>
        <artifactId>eunke-configweb</artifactId>
        <name>eunke-configweb</name>
        <url>http://maven.apache.org</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <maven-jar-plugin.version>2.6</maven-jar-plugin.version>
        </properties>
    
        <dependencies>
            <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>
            <!-- 这个依赖本来是可以不加的,但是配置没办法刷新,加上它可以手动刷新配置 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <fork>true</fork>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    服务端application.yml文件配置(红色字体部分:git地址和用户密码请根据自己的修改)

    server:
       port: 8888
    spring:
       application:
          name: eunke-configweb
       cloud:
          config:
             server:
                git:
                   # 配置git仓库地址
                   uri: http://example.xx.com/xx/xx-config.git
                   # 访问git仓库的用户名
                   username: example
                   # 访问git仓库的用户密码 如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写
                   password: example
                   #支持带{application}和{profile}({label}如果需要)占位符的搜索路径
                   search-paths: '{application}'
             # 配置仓库的分支,可不配
             label: master

    服务端启动文件配置

    @EnableConfigServer
    @SpringBootApplication
    public class ConfigServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConfigServerApplication.class, args);
        }
    }

    4. 客户端文件目录如下:

    pom.xml配置,增加如下依赖

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
    
            <!-- 这个依赖本来是可以不加的,但是配置没办法刷新,加上它可以手动刷新配置 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>

    resources资源目录下增加文件bootstrap.yml(此文件启动加载的优先级最高)

    server:
       port: 8089
    
    spring:
      profiles:
        active: dev
    
    #环境可以选择切换,只需要修改 spring.profiles.active值即可, 默认为测试环境
    spring:
      profiles: dev
      cloud:
        bootstrap:
          enabled: false
        config:
          uri: http://localhost:8888
          name: eunke-sg56-mpweb
          profile: dev
    
    
    #手动刷新配置用
    management:
      endpoints:
        web:
          exposure:
            #加载所有的端点,默认只加载了info、health
            include: '*'
        refresh:
            enabled: true

    gitlab的文件命名:

    命名方式为:{application}-{profile}.yml

    由于我在测试环境使用本地的application.yml文件,方便修改,故未将eunke-sg56-mpweb-dev.yml上传到gitlab, 按照加载优先级, bootstrap.yml上获取到的gitlab配置文件的内容会覆盖本地目录加载的内容,如果bootstrap.yml获取不到内容,则本地内容生效。

    如果是部署生产,则在启动命令后增加参数(红色字体部分)

    java -jar eunke-sg56-mpweb-1.0.0.jar --spring.profiles.active=prd

    完毕~~

  • 相关阅读:
    CoreData学习-最好的一片文章
    Xcode4.6下添加百度地图ios版(BMapKit)详细教程(_BMKMapManager错误解决)
    NSSearchPathForDirectoriesInDomains用法
    编绎显示Unknown type name “CGFloat” 错误解决方法
    自动调整cell的高度
    sqlMapConfig约束
    PotPlayer左上角信息关闭
    松懈
    sql查询练习
    idea内容补充
  • 原文地址:https://www.cnblogs.com/mhl1003/p/12155210.html
Copyright © 2011-2022 走看看