博主介绍: 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 IDbootstrap.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 才发现的问题。