以下Nacos是单机部署,非集群模式~
配置管理
将需要的配置文件放到Nacos中,默认是properties格式的配置文件
如果想要yaml格式的配置文件,则在获取这个配置文件时,bootstrap.properties文件中要加入
spring.cloud.nacos.config.file-extension=yaml
才能将读到的配置文件正确的转为yaml格式。
依赖导入(pom.xml):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>NacosTest</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 需要slfj所以引入springboot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>2.1.2.RELEASE</version>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<!-- 和SpringCloud做了整合的nacos包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
</dependencies>
</project>
通过配置文件bootstrap.properties中
spring.application.name=Test
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=xxx
设置spring.application.name=Test ,会优先从Nacos上拉取dataId为Test.properties的配置文件(group为上面配置文件中指定的xxx),如果没有这个配置文件则拉取dataId为Test的配置文件,
server-addr是Nacos的ip地址加端口
在bootstrap.properties中加上下面的配置:
spring.cloud.nacos.config.shared-configs[0].data-id=common.properties
spring.cloud.nacos.config.shared-configs[0].group=xxx
spring.cloud.nacos.config.shared-configs[0].refresh=true
来实现读取多个配置文件。
也就是如果还想读其他配置文件可以使用spring.cloud.nacos.config.shared-configs[0].data-id,spring.cloud.nacos.config.shared-configs[1].dataId等来指定,也可以通过spring.cloud.nacos.config.extension-configs[0]...进行配置。
如果共享的配置文件的格式是yaml,需要在bootstrap.properties中加入
spring.cloud.nacos.config.shared-configs[0].file-extension=yaml来指定格式(如果你使用的是extension-configs来共享配置文件的话,就使用spring.cloud.nacos.config.extension-configs[0].file-extension=yaml)
如果多个配置文件中的配置项冲突会按照 :
主配置(直接用spring.application.name和spring.cloud.nacos.config.group共同指定的配置文件) > extension-configs > shared-configs的优先级进行读取
使用示例:
启动类,使用springboot做示范
package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class,args);
}
}
UserController.java
package org.example;
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.RestController;
@RestController
// 加上这个注解才能实现自动刷新
@RefreshScope
public class UserController {
//只能使用VValue不能使用@NacosValue
@Value(value = "${userx.name}")
String name;
@GetMapping("/test")
public String test() {
return name;
}
}
加上@RefreshScope,当配置文件发生改变,能够及时更新
使用@Value获取配置项
今天的分享就到这啦~
后面有时间再更一下nacos的服务管理功能!
开发入门中,欢迎指教~