(1)项目下有多个模块,在common公共模块的pom.xml写入如下代码
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.1.0.RELEASE
pom
import
(2)类路径下新建bootstrap.properties
此文件会优先加载,相对于application.properties
spring.application.name=此处填写应用名
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
(3)配置文件application.yml
test:
user:
name: lisi
(4)写一个接口来测试,使用@Value即可拿到application.yml中的数据
public class TestController {
@Value("${test.user.name}")
String name;
@RequestMapping("/test")
public String test() {
return "name:" + name;
}
}
(5)测试接口
结果为:name:lisi
假设需要修改application.yml中的数据,需要修改代码,再将应用重新打包,发布,启动,流程太复杂,使用Nacos配置中心可以解决这个问题,将配置交给配置中心
(6)nacos网站上添加配置
test.user.name=zhangsan
(7)controller添加注解,重启应用测试
@RefreshScope
结果为:name:zhangsan
后续在nacos配置中心修改配置点击发布即可,不用重启应用
有优先读取配置中心的数据
默认:public,默认新增的配置都在public
应用场景:
1. 基于环境进行隔离,开发、测试、生产环境的配置用命名空间来隔离
2. 基于每个微服务来隔离,每个微服务一个命名空间
项目若想使用自建的命名空间,bootstrap.properties加入
spring.cloud.nacos.config.namespace=xxxxxx
在bootstarp.properties添加
spring.cloud.nacos.config.group=xxx
使用场景:一般来说,在一个微服务项目里,每个微服务一个命名空间,在这个命名空间里再进行分组区分环境
配置都写在一个配置文件中,看起来很杂乱,把配置拆分为多个文件,比如,和数据源相关的自己单独一个配置文件datasource.yml
spring.cloud.nacos.config.ext-config[0].data-id=datsource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[0].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[0].data-id=other.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
@ConfigurationProperties也可以获取配置的数据
注意点
客户端(IDEA)需要写spring.application.name=xxx
步骤小总结:
nacos配置中心创建配置文件,注意文件名
把IDEA的配置文件全部粘贴进去,点击发布
IDEA复制一份application.yml到bootstrap.yml
注释全部application.yml里的内容
bootstrap.yml
spring:
application:
name: game
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
profiles:
active: dev
server:
port: 8100
# 整合MyBatisPlus第二步
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/230907?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
# nacos第二步
application:
name: game
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true