18.Nacos配置管理-微服务读取Nacos中的配置

需要解决的问题

1.实现配置更改热更新,而不是改动了配置文件还要去重启服务才能生效。

2.对多个微服务的配置文件统一集中管理。而不是需要对每个微服务逐一去修改配置文件,特别是公共通用的配置。

配置管理服务中的配置发生改变后,回去立马通知各个微服务完成对最新配置的读取,并完成热更新。

Nacos管理控制台的配置管理

配置文件的Data ID:服务名称-profile.后缀名

微服务如何读取到nacos中的配置信息

bootstrap.yml引导文件的优先级 > application.yml

优先级:application.properties > application.yml > application.yaml

引入nacos配置管理的pom坐标依赖:

java 复制代码
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

bootstrap.yml文件的内容:

java 复制代码
spring:
  application:
    name: order-service # 服务名称
  profiles:
    active: dev # 开发环境
  cloud:
    nacos:
      server-addr: localhost:8848 # Nacos地址
      config:
        file-extension: yaml # 文件后缀名

正好对应了nacos管理控制台中配置文件的名称: order-service-dev.yaml

application.yml中与bootstrap.yml配置中重复的配置给注释掉。

java 复制代码
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
#  application:
#    name: order-service
  cloud:
    nacos:
#      server-addr: localhost:8848 #nacos服务端地址
      discovery:
        cluster-name: chengdu #配置集群名称也就是机房位置
#        namespace: 713c0b99-4de3-4774-b186-b9b3a94f60d0 #配置命名空间的id
mybatis:
  type-aliases-package: com.xkj.org.pojo
  configuration:
    map-underscore-to-camel-case: true

logging:
  level:
    com.xkj.org: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url:
#      defaultZone: http://localhost:10086/eureka/



user-service:
  ribbon:
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则
ribbon:
  eager-load:
    enabled: true # 开启饥饿加载

    clients:
      - user-service #对user-service这个服务饥饿加载
java 复制代码
    @Value("${pattern.dateformat}")
    private String dateformat;

    @GetMapping("now")
    public String now() {
        log.info("dateformat={}", dateformat);
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat, Locale.CHINA));
    }
相关推荐
工业3D_大熊9 分钟前
3D可视化引擎HOOPS Luminate场景图详解:形状的创建、销毁与管理
java·c++·3d·docker·c#·制造·数据可视化
szc176712 分钟前
docker 相关命令
java·docker·jenkins
程序媛-徐师姐22 分钟前
Java 基于SpringBoot+vue框架的老年医疗保健网站
java·vue.js·spring boot·老年医疗保健·老年 医疗保健
yngsqq22 分钟前
c#使用高版本8.0步骤
java·前端·c#
尘浮生32 分钟前
Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
小白不太白95036 分钟前
设计模式之 模板方法模式
java·设计模式·模板方法模式
Tech Synapse38 分钟前
Java根据前端返回的字段名进行查询数据的方法
java·开发语言·后端
.生产的驴39 分钟前
SpringCloud OpenFeign用户转发在请求头中添加用户信息 微服务内部调用
spring boot·后端·spring·spring cloud·微服务·架构
喵叔哟41 分钟前
16. 【.NET 8 实战--孢子记账--从单体到微服务】--汇率获取定时器
微服务·oracle·.net