搭建SpringCloudAlibaba开发环境之配置中心Nacos
springboot配置文件的加载顺序
bootstrap.properties
bootstrap.yml
application.properties
application.yml
从上到下优先级递减
搭建nacos配置中心服务端
DataId 默认是properties文件,如果要修改为yaml文件,文件已
.yaml结尾即可
在nacos配置中心配置Springboot配置文件
搭建nacos配置中心客户端
在pom文件中加入nacos config依赖
<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>
<artifactId>bygones-provider</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>com.bygones</groupId>
<artifactId>bygones-dependencies</artifactId>
<version>1.0.0-SNAPSHOST</version>
<relativePath>../bygones-dependencies/pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- nacos discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--nacos config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
</project>
使用bootstrap.properties文件关联nacos服务端的配置中心
# 这里的应用名对应 Nacos Config 中的 Data ID,实际应用名称以配置中心的配置为准
spring.application.name=provider
# 指定查找名为 provider.yaml 的配置文件
spring.cloud.nacos.config.file-extension=yaml
# Nacos Server 的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
客户端读取服务端的配置信息
使用ConfigurableApplicationContext读取服务端的配置信息
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
/** 当nacos配置中心修改值后,可以动态的获取到修改后的值 */
@Autowired
private ConfigurableApplicationContext applicationContext;
/** 每次重启服务才可以获取到nacos配置中心的值 */
@Value("${user.names}")
private String username;
@GetMapping("get-config")
public String getConfig(){
return username;
}
@GetMapping("get-config-nacos")
public String getConfigOfNacos(){
return applicationContext.getEnvironment().getProperty("user.names");
}
}
nacos配置中心-多环境配置
解决程序在不同环境(正式环境/开发环境)需要读取nacos配置中心
不同配置文件的问题
nacos配置中心服务端
在nacos服务端创建prod(生产)的配置文件
配置nacos客户端
修改bootstrap.properties文件,加入spring.profiles.active适配
nacos配置中心中不同环境的配置文件
# 适配nacos配置中心中不同环境的配置文件
spring.profiles.active=prod
# 这里的应用名对应 Nacos Config 中的 Data ID,实际应用名称以配置中心的配置为准
spring.application.name=provider
# 指定查找名为 provider.yaml 的配置文件
spring.cloud.nacos.config.file-extension=yaml
# Nacos Server 的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
修改项目的启动是的配置项
特别注意
在nacos配置中心的服务端与客户端的bootstrap配置文件以及项目
启动时的配置项均为prod,保证相同即可