springboot实现读取nacos配置文件
springboot读取nacos配置文件
SpringBoot 注册服务到 Nacos 上,由 Nacos 来做服务的管理。
在 Nacos的配置列表中,管理着服务的配置文件。
SpringBoot 有两种方式来读取配置文件的内容,一种是写配置文件类 @ConfigurationProperties ,一种是使用 @Value 注解。
首先,Nacos 的配置文件如下:
### 配置文件使用 yml 格式, 也可以使用 properties 格式,最终 yml 格式会转化成 properties,但是 @Value 注解### 对 yml 的list 的格式有不同,这个稍后再说。 eg: server.yml (list参数,使用逗号分隔) dashboard: emergent-info: key-1:value-1,key-2:value-2,key-3:value-3 ### 或者这种形式 (注意缩进空格,- 后空格) dashboard: emergent-info: - key-1:value-1 - key-2:value-2 - key-3:value-3
第一种方式来解析
@Setter @Getter @ConfigurationProperties("server") public class ServerProperties { private List<String> dashboardEmergentInfo; }
使用 @ConfigurationProperties 方式来解析,要对应配置文件名,对应属性的key值顺序和参数名的驼峰形式命名。
配置文件类的方式,可以解析上面 list 的两种写法。
第二种方式来解析
@RefreshScope public class DashboardController{ @Value("${dashboard.emergent-info:}") private List<String> emergentInfo = new ArrayList<>(); ... }
使用 @Value 注解的方式,代码量是少了,但是解析不了上面配置文件的第二种方式,只能解析第一种使用逗号分隔的list数据。
@Value里面的冒号后面是初始化值,这里做空处理。
Nacos 修改配置文件list的内容,@Value 注解不会时时的刷新处理数据,所以在 类上加了 @RefreshScope。
springboot读取nacos配置yml文件
首先导入nacos依赖
<!-- nacos客户端依赖 注册中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.6.RELEASE</version> </dependency> <!-- nacos配置中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.6.RELEASE</version> </dependency>
一个是注册中心一个是配置中心
需要在bootstrap.yml配置服务名称和开发环境:
server: port:18080 spring: application: name: userservice-server Profiles: active:dev //开发环境 cloud: nacos: discovery: server-addr: localhost:8848 /// 这是默认端口 注册中心地址 config: server-addr: localhost:8848 /// 这是默认端口 配置中心地址 file-extension: yaml //nacos注册中心配置文件是yaml文件,最好在这里配置一下
然后就可以开始配置nacos配置中心了
Data ID: userservice-server-dev.yaml //这个地方就是服务名称-开发环境.yaml 下面文件类别只有yaml
//group 默认就行不用改 //描述 按自己需求写就行 //配置格式:选yaml //配置内容:按自己需求 写yaml配置文件就可以了 注意空格问题,多敲少敲读取不到 yml格式
一定注意格式敲正确,over
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java中POST、GET、@RequestBody和@RequestParam区别详析
在前后端传json数据进行交互的时候,同学们会经常用到的两个注解,@RequestBody和@RequestParam主要是用来接收前端传给后端的json数据,下面这篇文章主要给大家介绍了关于Java中POST、GET、@RequestBody和@RequestParam区别的相关资料,需要的朋友可以参考下2022-10-10解决springboot配置文件组解决自动配置属性无法注入问题
在使用Spring Boot时,可能会遇到配置文件属性注入失败的问题,本文描述了一个案例,其中尝试使用profile文件组指定不同环境下的配置文件,但遇到了属性无法成功注入的情况,提供的解决办法是将Spring Boot的版本号从2.2.0.RELEASE升级到2.4.02024-09-09
最新评论