博主介绍: 22届计科专业毕业,来自湖南,主要是在CSDN记录一些自己在Java开发过程中遇到的一些问题,欢迎大家一起讨论学习,也欢迎大家的批评指正。
文章目录
- 前言
- 正文
- 1、nacos的安装与启动
- 2、使用nacos配置中心实现动态刷新
- 3、我自己配置过程遇到的问题
- 4、建议
前言
背景:我在学习谷粒商城项目搭建nacos配置中心时,遇到一直无法动态刷新的问题,本文将介绍以下几点内容:
1、windows下nacos的安装与启动;
2、如何简单使用nacos的配置中心;
3、已经我自己遇到的问题与解决方案。
正文
1、nacos的安装与启动
nacos1.4.2百度云盘下载地址:
链接:https://pan.baidu.com/s/1efhYx7YDW_RXiwX-DzdIEw
提取码:jok0
下载之后直接解压就可以了,nacos默认是集群默认启动,所以我们需要做一个修改操作:
进入nacos/bin目录中,找到startup.cmd
文件,然后文本编辑器打开,将cluster
修改成 standalone
:
然后再双击startup.cmd
就可以运行了,浏览器访问 http://localhost:8848/nacos/#/login 就可以进入nacos
登录页面了,账号和密码都是nacos
2、使用nacos配置中心实现动态刷新
首先要注意:springboot 、springcloud与springcloud alibaba 三者对应的版本,详细对应版本信息。
我的版本分别是:
<spring-boot.version>2.1.8.RELEASE</spring-boot.version><spring-cloud.version>Greenwich.SR3</spring-cloud.version><spring-alibaba.version>2.1.0.RELEASE</spring-alibaba.version>
使用配置中心之前,应该要确保服务已在nacos中注册成功,这里还是以配置中心为主要内容,服务注册就不讲了。
nacos配置中心步骤:
引入依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
在 resources
目录中新增 bootstrap.properties
文件,文件内容如下:
spring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.application.name=gulimall-coupon
在新建一个 application.properties
文件,文件内容中添加以下内容:
coupon.user.name="张三"coupon.user.age=13
在控制层添加测试代码,注意@RefreshScope
注解是实现动态刷新的关键,必须添加:
@RestController@RequestMapping("coupon/coupon")@RefreshScopepublic class CouponController { @Autowired private CouponService couponService; @Value("${coupon.user.name}") private String name; @Value("${coupon.user.age}") private Integer age; @RequestMapping("/test") public R test(){ return R.ok().put("name",name).put("age",age); }}
启动项目,先访问测试地址,得到如下数据,正是在application.properties
文件中配置的值。
接下来我们在nacos中添加配置文件:
下面是我配置的文件,注意:Data ID
是 bootstrap.properties
文件对应的 spring.application.name
的值,加上properties
后缀也就是,gulimall-coupon.properties
,这些都是可以自己配置的,具体可以参考官方文档,中dataId
部分。
发布之后刷新浏览器再次访问得到的数据已经发生变化,这说明配置成功了:
3、我自己配置过程遇到的问题
问题:项目没有报错,nacos也启动成功了,并且服务也注册成功了,就是配置中心没有生效。
原因:我的 gulimall-coupon
模块是引入了 gulimall-common
模块,我在 gulimall-common
中已经引入了下图依赖,然后我在 gulimall-coupon
模块中也引入了 下图 依赖,应该是因为依赖冲突,导致配置中心没有生效,删除 gulimall-coupon
中下图依赖就可以了。
4、建议
项目中即使存在重复依赖,有可能可以运行成功的,我的就是这样,但是执行 maven clean
就会报错,
所以大家在遇到这种类似的问题的时候,可以先执行一下 maven clean
命令来进行检查,这个问题搞了我好久,一直以为我是配置的方法不对,就是执行 maven clean
才发现的问题。