• spring boot项目中使用nacos作为配置中心


    利用nacos作为配置中心,好处不言而喻,配置外置了,与程序解耦,并且nacos还提供了友好的管理界面。spring boot的卖点之一,就是与之前的spring相比,所谓约定重于配置,配置文件大大简化。现在使用nacos这种外置配置中心,是更加向前了一步。

    具体应用步骤:

    1、pom.xml中引入nacos支持包
    2、pom.xml中指向nacos
    3、配置文件中使用nacos配置项

    如此,即可使用nacos中的配置,修改啥的都很方便,根本不用远程服务器。如果设置refresh选项,连程序都不用重启,即时刷新。下面是详细介绍:

    1、pom.xml中引入nacos支持包

    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>
    
    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、pom.xml中指向nacos

    这里其实还没有指向nacos,只是定义了一些属性。因为我们这个项目准确来说,是个spring cloud项目(spring cloud居于spring boot),里面包含多个子系统,因此在最外层的pom.xml定义了公共属性,其中包含nacos。如果只是spring boot,那么可以省去这一步。

    <profile>
    	。。。
        <properties>
    。。。
            
            <config.server-addr>192.168.10.248:8848config.server-addr>
            
            <config.namespace>gdhysthjconfig.namespace>
            
            <config.username>nacosconfig.username>
            
            <config.password>nacosconfig.password>
    。。。
        properties>
    profile>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3、配置文件中使用nacos配置项

    由于我这个spring boot项目使用了spring cloud,它有一个bootstrap.yml(bootstrap,绑鞋带?引申为步步为营、引导程序之意),对nacos的应用即在于此。我猜spring boot项目,直接在application.properties中定义也可以的。

    spring:
    	。。。
        cloud:
    		。。。
            nacos:
                config:
                    namespace: ${config.namespace} #这些就是前面定义的公共属性。如果是spring boot,直接写值应该也可以
                    server-addr: ${config.server-addr}
                    username: ${config.username}
                    password: ${config.password}
                    shared-configs[0]:
                      data-id: common.properties
                      refresh: true #自动刷新
                    shared-configs[1]:
                      data-id: db_oracle.properties
                      group: YJZH_GROUP
                      refresh: true
                    shared-configs[2]:
                      data-id: redis.properties
                      refresh: true
                    shared-configs[3]:
                      data-id: rabbitmq.properties
                      refresh: true
                    shared-configs[4]:
                      data-id: minio.properties
                      refresh: true
                discovery:
                  namespace: ${config.namespace}
                  server-addr: ${discovery.server-addr}
                  username: ${config.username}
                  password: ${config.password}
    
    		。。。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    在这里插入图片描述
    由上图可知,指定的命名空间下,有好几个配置文件,然后它们以数组的形式,在spring cloud的bootstrap.yml文件中被指定:shared-configs[0]、shared-configs[1]、。。。其实将这些分散的配置文件的内容写在一起,合成一个文件也是可以的。不管是一个文件或多个文件,对于系统来说,最终都是一个配置的集合。shared-configs[x]是nacos推荐的写法,原先是ext-config[x],现在已经弃用了。配置文件的书写顺序不重要,一个配置文件,比如db.properties,你放在shared-configs[0]或者shared-configs[1]都没关系。

     shared-configs[1]:
       data-id: db_oracle.properties
       group: YJZH_GROUP #如果同一个命名空间下,配置文件名称相同咋办?用不同分组名称
       refresh: true #是否自动刷新。true的hua,更改nacos配置,在应用这里会立即生效
    
    • 1
    • 2
    • 3
    • 4

    小结

    nacos中的配置,和我们平时写在application.propertis/application.yml中的配置并无不同,在系统中是同样使用。

  • 相关阅读:
    阿里P7程序员斩获offer感言:突破Java瓶颈期我用了这一套路线图
    【前端精进之路】JS篇:第3期 执行上下文
    《uni-app》一个非canvas的飞机对战小游戏实现(一)准备
    怎么把pdf合并成一个pdf?认准这几个合并方法
    Google Cloud Natural Language情感分析教程
    Bitget Wallet:使用 Base 链购买 ETH 的简明教程
    Lambda函数介绍
    库函数的使用和模拟实现
    ubuntu中的系统消息中显卡显示llvmpipe (LLVM 10.0.0, 256 bits)
    C++入门(2):缺省参数、函数重载、引用
  • 原文地址:https://blog.csdn.net/leftfist/article/details/127784999