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 @ 2023-06-21 09:33  佛系粥米  阅读(344)  评论(0编辑  收藏  举报