使用Nacos Config作为配置中心配置以及一些容易犯的坑
官方文档:https://nacos.io/zh-cn/docs/quick-start.html
nacos的安装部署,需要先配置好jdk跟maven的环境,运行非常简单,直接官网下载运行即可,按照你的系统选择下载的版本,需要注意的是,必须要选择好你所使用的模式,不同的模式有不同的运行配置要求,下载下来一定要注意配置文件,比较简单的方式就是使用docker+nacos,这样不需要去配置jdk和maven,后面有空会再写一篇关于nacos的安装部署。
1、在你的微服务项目中引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
注意:nacos config 和 nacos discover,这两个一个是配置中心,一个是注册中心,一般是与微服务搭配,如springcloud或springcloud alibaba(dubbo),这两个使用的前提都是先得把nacos运行起来。
2、在Nacos上添加你的配置文件
默认nacos访问地址http://localhost:8848/nacos/,默认账号是nacos,默认密码nacos
Data ID: nacos-config-develop.yaml Group : DEFAULT_GROUP 配置格式: YAML 配置内容: 你的项目配置,比如数据库配置端口配置等,就等基本同于项目的yml配置文件内容
同时在你的项目里创建 bootstrap.yml替代原来的作为配置文件(非常重要),配置文件执行顺序
bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
bootstrap.yml内容如下
spring:
application:
name: nacos-config
cloud:
nacos:
config:
server-addr: localhost:8848 # nacos的服务端地址
file-extension: yaml # 配置文件格式
profiles:
active: develop
spring.application.name 对应的是Data ID nacos-config
spring.profiles.active 对应的是Data ID deveop ,他们之间会自动用-隔开。
spring.cloud.nacos.config.file-extension 对应的是配置格式 yaml,可以自己选配置文件的格式,但必须要对应上。
spring.cloud.nacos.config.server-addr 是你nacos的服务端地址,必须是ip+端口,默认端口80也不能省略
配置好后运行程序,他就会自动通过nacos的地址去获取所需要的配置文件内容
nacos config 是支持动态更新的,也就是说直接修改nacos上的内容就可以动态更新你的配置内容
3、获取nacos配置中心的内容的值
nacos: 123456
nacos上的配置文件内容如上,有两种获取方式:
1、通过上下文获取
@RestController
public class NacosConfigController {
@Autowired
private ConfigurableApplicationContext applicationContext;
@GetMapping("/nacos-config")
public String nacosConfig() {
return applicationContext.getEnvironment().getProperty("nacos");
}
}
2、注解方式获取
@RestController
@RefreshScope
public class NacosConfigController {
@Value("${nacos}")
public String appNacos;
@GetMapping("/nacos-config")
public String nacosConfig() {
return appNacos;
}
}
4、一些注意事项和官方的坑
1、配置文件内容一定要写全,一般都是复制粘贴上去,往往很多时候就是没写全却又以为自己写全了,找半天没找到运行报错的原因。
2、文件的编码格式问题,导致中文注释的使用会报错,这个在Linux系统下不会有问题,但在window系统下,部署的nacos的配置文件使用中文注释就会有问题,推荐不使用中文注释。
更多推荐
所有评论(0)