SpringCloud2022接入nacos(一)

说明

  • 基本环境: SpringCloud(2022.0.0), SpringCloudAlibaba(2022.0.0.0-RC1), SpringBoot(3.0.0), JDK(17.0.9)
  • 版本对应关系参考

项目概况

  • 我的项目为maven工程, 所有的依赖都由父pom管理, 有子模块member, common, business, gateway, batch.
  • common为公共模块, member, business, batch 都会引入该模块.
  • gateway不引入common模块, 单独引入依赖.

nacos-server安装启动

项目引入nacos

        <!-- 注册中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--引入bootstrap读取配置文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
  •  nacos官网: Nacos Spring Cloud 快速开始 
  • 在我的项目中, 只需要common, gateway模块引入上述依赖.
  • 注意需要额外引入bootstrap依赖用来读取bootstrap.yml或propertoes文件, 否则可能会报异常: 
    No spring.config.import property has been defined

项目新增配置文件

#开发环境
spring.profiles.active=dev
#应用名称
spring.application.name=business-service
#nacos注册中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#注册中心命名空间id
spring.cloud.nacos.discovery.namespace=train_dev
#nacos配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#配置中心命名空间id
spring.cloud.nacos.config.namespace=train_dev
#配置中心分组
spring.cloud.nacos.config.group=business
#配置中心文件类型
spring.cloud.nacos.config.file-extension=properties
  • 我这边首先是在business模块配置.
  • 在resource目录下新增bootstrap.yml或properties文件, 我这边是properties, 配置如上.
  • 注释其他yml或properties文件, 只保留bootstrap.properties.

nacos-server新增配置文件

  • 然后在nacos-server页面上: 配置管理-配置列表, 新建自己的文件. 注意文件的命名, 命名空间id, 分组要和上述配置文件对应上.
  • 关于nacos-server上dataId的设置, 可查看官网
  • 上述关于business-service-dev.properties文件内容, 尽量跟项目本地的bootstrap.properties文件内容不要有一样的, 不过如果有重复的配置项, 那么以nacos上的配置也会覆盖本地的.
  • 我的内容是这样的: (其中 test.flag 用来测试nacos配置是否生效) 
    
    server.port=8011
    server.servlet.context-path=/business
    
    
    #数据源配置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/train_business?characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false
    spring.datasource.username=train
    spring.datasource.password=toor
    
    
    #mybatis-plus配置
    #配置xml mapper文件位置
    mybatis-plus.mapper-locations=classpath:mapper/**/*.xml
    #开启sql日志
    #mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    
    
    #日志级别
    logging.level.com.example.trainticket.business.mapper=trace
    
    
    #仅用来测试配置动态刷新
    test.flag=false

测试nacos配置是否生效 

  •  新建一个controller, 我这边是在business模块中创建: 
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 配置发布之后,动态刷新配置
     *
     * @author liaorj
     * @date 2024/01/18
     */
    @RefreshScope
    @RestController
    @RequestMapping("/config")
    public class ConfigController {
    
        @Value("${test.flag}")
        private boolean testFlag;
    
        /**
         * 获取nacos配置文件中的信息
         *
         * @return
         */
        @GetMapping("/get")
        public String get() {
            return "获取nacos配置成功, testFlag=" + testFlag;
        }
    }
    
  • 然后启动business模块, 访问该接口. 访问能获取testFlag则说明配置ok; 然后再修改nacos-server上的 test.flag 的值并发布, 不用重启项目, 接着再访问该接口. 如果能获取最新值, 则说明nacos的动态刷新配置功能ok.
  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值