首页 > 其他分享 >【Spring Cloud-Nacos配置管理】

【Spring Cloud-Nacos配置管理】

时间:2023-03-07 10:32:48浏览次数:34  
标签:extension yaml spring 配置 配置管理 Nacos application Spring

  • 目录:
  • 一、Nacos配置中心快速入门
  • 二、Nacos配置自动刷新
  • 三、Nacos配置共享
    配置优先级


一、Nacos配置中心快速入门

【Spring Cloud-Nacos配置管理】_配置文件


①常规项目:项目启动→读取application.yml配置文件→创建Spring IOC容器→加载Bean;
②Nacos配置中心项目:项目启动→读取Nacos配置中心文件→读取application.yml配置文件→创建Spring IOC容器→加载Bean;


注意:此处的问题是Nacos server-addr相关配置在application.yml中,所以引入bootstrap.yml配置,来提前加载Nacos配置中心所需配置。


③Nacos配置中心项目:项目启动→读取bootstrap.yml配置文件→读取Nacos配置中心文件→读取application.yml配置文件→创建Spring IOC容器→加载Bean;

  • 1、基础依赖

注意:SpringCloud2020及以后的版本默认不启用 bootstrap 配置,我们需要在pom里面显式地引入,以开启bootstrap.yml配置文件读取的支持。


<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--加载bootstrap.yml文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
  • 2、编写bootstrap.yml配置文

user服务读取配置中心配置三要素:
①spring-application-name:应用名称-userservice;
②spring-profiles-active:配置文件环境-dev(代表开发环境develop);
③file-extension:文件扩展名-yaml;
配置中心处,配置文件完整名称:userservice-dev.yaml


# use bootstrap.yml to load settings from nacos before application.yml is loaded
# [spring-application-name][spring-profiles-active][file-extension]
spring:
application:
name: userservice
profiles:
active: dev # environment
cloud:
nacos:
server-addr: 127.0.0.1:8848 # server address
config:
file-extension: yaml # file extension
  • 3、编写userservice-dev.yaml配置文件

①配置管理→配置列表→➕

【Spring Cloud-Nacos配置管理】_bootstrap_02


②编写userservice-dev.yaml配置文件

【Spring Cloud-Nacos配置管理】_配置文件_03


  • 4、编写代码读取配置

①@Value注解注入配置属性


@Value("${pattern.dateformat}")
private String dateformat;

②方法内读取配置


LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));


二、Nacos配置自动刷新

  • 1、@RefreshScope注解 + @Value注解

在对应的@Value注解使用的类上使用@RefreshScope注解


@RefreshScope
public class UserController{
...
@Value("${pattern.dateformat}")
private String dateformat;
...
}
  • 2、@ConfigurationProperties注解 + @Autowired注解

编写Config类:prefix = "pattern" + [field] dateformat,与配置文件pattern.dateformat 对应即可。


@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
}
  • 3、获取Config类的bean,获取属性


@Autowired
private PatternProperties patternProperties;

patternProperties.getDateformat();


三、Nacos配置共享

  • 1、[spring-application-name][spring-profiles-active][file-extension]
    开发环境:userservice-dev.yaml
    测试环境:userservice-test.yaml
    生产环境:userservice-pro.yaml
  • 2、[spring-application-name][file-extension]
    共享配置:userservice.yaml
  • 3、application.yml本地配置

配置优先级:[spring-application-name][spring-profiles-active][file-extension]>[spring-application-name][file-extension]>

本地配置; 即:服务名-环境类型.yaml>服务名.yaml>本地配置。 如果配置不同,则合并,相同则优先级高的覆盖优先级低的。

  • 4、shared-configs 和 extension-configs
    优先级:extension-configs > shared-configs ,此处不做展开,配置如下:


# use bootstrap.yml to load settings from nacos before application.yml is loaded
# [application-name][profile][file-extension]
spring:
application:
name: userservice
profiles:
active: dev # environment
cloud:
nacos:
server-addr: 127.0.0.1:8848 # server address
config:
file-extension: yaml # file extension
shared-configs:
- dataId: common-one.yaml
group: SHARE_GROUP_ONE
- dataId: common-two.yaml
group: SHARE_GROUP_TWO
extension-configs:
- dataId: extend.yaml
group: EXTEND_GROUP_ONE

另外:extension-configs的加载后于shared-configs。



标签:extension,yaml,spring,配置,配置管理,Nacos,application,Spring
From: https://blog.51cto.com/u_15874356/6105441

相关文章

  • 不背锅运维:配置管理和服务发现之Confd和Consul
    Confd和Consul是什么鬼?Confd和Consul都是用于配置管理和服务发现的工具。https://www.consul.io/https://www.tail-f.com/confd-basic/ConfdConfd是一个轻量级的......
  • ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......
  • 8_SpringMVC
    SpringMVCSpringMVC技术和Servlet技术功能等同,均属于web层开发技术学习目标掌握基于SpringMvc获取请求参数与响应json数据操作熟练应用基于REST风格的请求路径设置与......
  • 7_Spring
    Spring初始SrpingSpring发展到今天已经形成了一种开发的生态圈,Spirng提供了若干项目,每个项目用于完成特点的功能我们常说的Spring就是指SpirngFrameworkSpringFram......
  • Spring Cloud Alibaba项目搭建
    一、简介作为微服务的解决方案之一的SpringcloudAlibaba拥有众多优秀的开源框架,那么我们就使用这么框架搭建一个项目,并以此来研究一下这些优秀框架的源码。所使用到......
  • 将springmvc.xml配置到resources目录
    web.xml配置<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-in......
  • SpringBoot SSM vue课程作业在线批阅系统
    SpringBootSSMvue课程作业在线批阅系统登录新闻公告在线留言课程管理指定课代表作业下发作业审批评分在线预览使用技术:SpringBoot或SSM +Mybatis+Mysql......
  • SpringBoot(十):thymeleaf + JSR303实现表单验证
    一、Person类packagecom.jms.pojo;importlombok.Data;importjavax.validation.constraints.*;@DatapublicclassPerson{@NotBlank(message="姓名不......
  • SpringBoot中基于拦截器实现登录验证功能
    拦截器简介拦截器是属于springmvc体系的,只能拦截controller的请求。拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。Interceptor......
  • springdatajpa基本管理实现
    springdatajpa近期由于想提升自己,所以简单的学了学springdatajpa,下面将简单利用springdatajpa实现数据的基础管理第一步导入依赖implementation'org.springframework.......