事件原委:
今天在学习SpringCloud,配置Nacos时出现了特别多的问题,故记录下来正确的配置过程。(实例)
1、环境搭建
要想完成Nacos的热配置,需要先运行Nacos服务,我这里的Nacos的版本为1.4.1
值得注意的是,一旦cmd窗口被关闭,Nacos服务也会随之关闭,所以这里我们不用关闭。
2、登录Nacos网页
网址在运行界面有写,我这里是:http://192.168.1.107:8848/nacos/index.html
登录后输入账号密码,默认都为nacos,进入页面
3、添加配置
此时我们在配置管理=>配置列表中点击"+"号
DataID:以 服务名称-命名空间.yaml 为格式
配置格式为YAML
配置内容填写要热部署的内容,这里添加测试
注意:这里的书写方式一定要规范,":"后如果要填写内容,一定要点一下空格;回车的缩进为两个空格,不能是Tab
点击发布即可。
4、添加bootstrap.yml配置文件
在想要添加热部署的模块下,在resource目录下添加bootstrap.yml配置文件,并在其中输入以下内容:
spring:
application:
name: xxxxxxxxx #服务名称
profiles:
active: xxx #开发环境
cloud:
nacos:
server-addr: localhost:8848 #Nacos地址
config:
file-extension: yaml #文件后缀名
其中name为你刚添加的配置的服务名称
active为开发环境,也叫命名空间
file-extension为文件的后缀名,一般为yaml
5、版本介绍
因为各个组件之间可能存在版本冲突,所以我介绍一下我使用的依赖的版本:
SpringCloud:2021.0.1
mysql:5.1.47(5以上就可以)
jdk:17
SpringBoot:2.7.6
SpringCloudalibaba:2.2.5.RELEASE
6、引入依赖
在你想要热部署的服务的pom文件下添加依赖:
(1)spring-cloud-starter-alibaba-nacos-config
(2)spring-cloud-starter-bootstrap(SpringBoot2.4之后的加这个)
7、测试
最后,在Controller类中添加测试方法,测试是否能够得到传过来的数据:
@Value("${pattern.dateformat}")
private String dateformat;
将传过来的数据通过org.springframework.beans.factory.annotation包下的Value注解注入。
可以向本类添加注解@RefreshScope,此注解的作用是添加自动刷新策略
编写GET请求方法:
@GetMapping("/now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
8、结果
运行该方法,在网页上输入localhost:你的端口号/now显示结果,至此,Nacos的热部署成功。
9、注意事项
(1)注意不要打错拼音,因为一个简单的错误而耽误很长时间得不偿失;
(2)注意配置文件的缩进以及格式;
(3)注意版本兼容问题,有很多同学的错误原因就是因为版本不兼容导致的;
(4)注意DataID的命名格式都是固定写法,比如服务名称,必须与IDEA中配置的服务名称相同。
以此篇文章记录我踩坑的一天~~~~啊啊