本文主要讲解Springboot集成Nacos技术实现及常见问题
-
软件版本
-
springboot 2.1.3
-
nacos 2.0.0
-
nacos-config-spring-boot-starter 0.2.7
-
项目配置
maven依赖
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>0.2.7</version> <exclusions> <exclusion> <artifactId>spring-boot-starter-logging</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> <exclusion> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-spring-context</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-spring-context</artifactId> <version>1.1.0</version> </dependency>
由于我本地的dubbo是2.7.10所以有依赖冲突,必须引入nacos-spring-context的高版本
属性文件配置
#nacos nacos.config.username=nacos nacos.config.password=nacos nacos.config.bootstrap.log-enable=true nacos.config.server-addr=172.128.1.250:8848 nacos.config.auto-refresh=true nacos.config.namespace=yzt nacos.config.group=wbs nacos.config.data-id=testProvider nacos.config.type=properties #使用本地配置 #spring.profiles.active=local
注解有提供@EnableNacosConfig但是我的启动类并没有引用,照样会加载nacos的配置,所以不清楚
到此程序的配置完成!
3 接下来是docker安装nacos2.0.0
-
直接使用docker命令拉去2.0.0版本的镜像包即可docker search nacos可查看所有
-
启动命令为
docker run --restart always -d --env MODE=standalone --env NACOS_AUTH_ENABLE=true -p 8848:8848 -p 9848:9848 -p 9849:9849 --name nacos nacos/nacos-server
我这里测试分别创建两个容器
nacos为开启鉴权
nacos2未开启鉴权
注意 : 研究过程中被这里坑了大半天时间,没有端口映射鉴权一直401
大家也看到了启动命令和老版本的不太一样,多了鉴权配置和端口映射,2.0新版 除了端口 8848外,还有增加偏移量为1000和1001的端口, 9848 9849两个端口号,docker容器要增加 宿主机的端口映射,NACOS_AUTH_ENABLE为是否启用鉴权访问功能,就是要不要先登陆,true就需要配置用户名密码,false不需要
安装好后的样子
注意 : 研究过程中被这里也坑了
nacos提供了默认的命名空间 public,不知道大家有没有注意到,这个默认的public的id是空的,所以如果使用默认的命名空间,本地配置的namespace必须为空,否则就会提示 config data not exit
nacos.config.namespace=
建议大家创建命名空间,不要使用默认的,容易误导后人
===========================
下面是应用系统的整体配置
本地只需要配置nacos的信息
nacos创建的配置
启动后,端口号应用了nacos配置文件的5000端口
测试打印配置是否会热加载
nacos配置
测试@Value 无法自动拿到最新的数据,这里就不展示了
必须使用nacos提供的注解,并开启自动刷新,才能实时拿到最新值
@NacosValue(value = "${wbs.basePath}", autoRefreshed = true)
可以看到目前是nacos的数据
nacos更新
再次调用接口查看,可以看到加载了nacos更新的数据
到此所有配置及测试完成,有不对的欢迎指正,或发邮箱
邮箱:ayuan19891029@163.com
作者:渊
求打赏