说明
- 基本环境: SpringCloud(2022.0.0), SpringCloudAlibaba(2022.0.0.0-RC1), SpringBoot(3.0.0), JDK(17.0.9)
- 版本对应关系参考
项目概况
- 我的项目为maven工程, 所有的依赖都由父pom管理, 有子模块member, common, business, gateway, batch.
- common为公共模块, member, business, batch 都会引入该模块.
- gateway不引入common模块, 单独引入依赖.
nacos-server安装启动
项目引入nacos
<!-- 注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--引入bootstrap读取配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
项目新增配置文件
#开发环境
spring.profiles.active=dev
#应用名称
spring.application.name=business-service
#nacos注册中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#注册中心命名空间id
spring.cloud.nacos.discovery.namespace=train_dev
#nacos配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#配置中心命名空间id
spring.cloud.nacos.config.namespace=train_dev
#配置中心分组
spring.cloud.nacos.config.group=business
#配置中心文件类型
spring.cloud.nacos.config.file-extension=properties
- 我这边首先是在business模块配置.
- 在resource目录下新增bootstrap.yml或properties文件, 我这边是properties, 配置如上.
- 注释其他yml或properties文件, 只保留bootstrap.properties.
nacos-server新增配置文件
测试nacos配置是否生效
- 新建一个controller, 我这边是在business模块中创建:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 配置发布之后,动态刷新配置
*
* @author liaorj
* @date 2024/01/18
*/
@RefreshScope
@RestController
@RequestMapping("/config")
public class ConfigController {
@Value("${test.flag}")
private boolean testFlag;
/**
* 获取nacos配置文件中的信息
*
* @return
*/
@GetMapping("/get")
public String get() {
return "获取nacos配置成功, testFlag=" + testFlag;
}
}
- 然后启动business模块, 访问该接口. 访问能获取testFlag则说明配置ok; 然后再修改nacos-server上的 test.flag 的值并发布, 不用重启项目, 接着再访问该接口. 如果能获取最新值, 则说明nacos的动态刷新配置功能ok.