1、Nacos官方文档的说明已经很清晰了。
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
2、前提条件
https://nacos.io/zh-cn/docs/quick-start.html
3、下载nacos
https://github.com/alibaba/nacos/releases
我这里下载1.4.1版本
4、启动nacos
startup.cmd -m standalone
5、配置中心
5.1、单配置
5.1.1、创建项目结构如下
5.1.2、在guo中配置依赖管理
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
在项目 guo-config 添加依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${spring-cloud.alibaba}</version> </dependency>
为了方便测试,添加web的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
这里需要注意的是几个版本的关系
请参考: https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
我这里使用 Spring Cloud Hoxton.SR8,Spring Cloud Alibaba 2.2.5.RELEASE,Spring Boot 2.3.2.RELEASE
在项目guo-config添加配置文件bootstrap.properties
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=example
spring.cloud.nacos.config.file-extension=yml
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profiles.active
即为当前环境对应的 profile。 注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
在nacos添加配置文件 example.yml, 这里我们没有配置 spring.cloud.nacos.config.prefix,spring.profiles.active 所以nacos配置文件名称就会变成 example.yml
编写配置测试类 @RefreshScope 注解将自动刷新配置
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
/**
* http://localhost:8080/config/get
*/
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}
启动
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class, args);
}
}
启动发现这样一行日志: Ignore the empty nacos configuration and get it based on dataId[example.yaml] & group[DEFAULT_GROUP]
表示没有找到配置文件 example.yaml,查看配置文件,发现我们配置的文件后缀为 yaml ,而我们在nacos中的配置文件为 example.yml 所以无法找到naocs配置。修改 bootstrap.properties 中 spring.cloud.nacos.config.file-extension=yml 后重启正常。
调用 http://localhost:8080/config/get 返回结果 false
修改nacos配置【useLocalCache: true】重新访问结果 true
5.2、多配置 编写配置文件 bootstrap.yml
spring:
application:
name: example
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
#第一种配置方式
ext-config:
- data-id: app.properties
group: DEFAULT_GROUP
# refresh: true
- data-id: jdbc.properties
group: DEFAULT_GROUP
- data-id: redis.properties
group: DEFAULT_GROUP
#第二种配置方式,不刷新
shared-dataids: yiwuxia.properties
#第二种配置方式,自动刷新配置
refreshable-dataids: test-one.properties, test-two.properties