Nacos-多环境配置共享

微服务启动时会从nacos读取多个配置文件:

[spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml  【nacos中定义的配置文件:服务名-环境.后缀名】

[spring.application.name].yaml,例如:userservice.yaml              【服务名.后缀名】与环境无关

无论profile如何变化,[spring.application.name].yaml这个文件【即userservice.yaml】一定会加载,因此多环境共享配置可以写入这个文件

 

1、在nacos控制台新建userservice.yaml配置文件

2、

复制代码
package cn.itcast.user.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "pattern") //只要前缀名和变量名两者拼接与配置配置文件一致,就能完成属性的自动注入
public class PatternProperties {
    private String dateformat;
    private String envSharedValue;
}
复制代码

 

复制代码
package cn.itcast.user.web;

import cn.itcast.user.config.PatternProperties;
import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

@Slf4j
@RestController
@RequestMapping("/user")
//@RefreshScope
public class UserController {

    @Autowired
    private UserService userService;

//    @Value("${pattern.dateformat}")
//    private String dateformate;
    @Autowired
    private PatternProperties patternProperties;


    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));
    }

    @GetMapping("prop")
    public PatternProperties properties(){
        return patternProperties;
    }

    /**
     * 路径: /user/110
     *
     * @param id 用户id
     * @return 用户
     */
    @GetMapping("/{id}")
    public User queryById(@PathVariable("id") Long id) {
        System.out.println(id);
        return userService.queryById(id);
    }
}
复制代码

多种配置的优先级:

  服务名-profile.yaml  >  服务名称.yaml  >  本地配置

  nacos中的配置 > 本地配置

  nacos:当前环境配置 > 多环境共享配置

 

微服务会从nacos读取的配置文件:

   [服务名]-[spring.profile.active].yaml,环境配置

   [服务名].yaml,默认配置,多环境共享

优先级:

   [服务名]-[环境].yaml >[服务名].yaml > 本地配置

posted @   佛系粥米  阅读(351)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示