场景一:单个yaml测试
某应用只导入单个配置文件,设置如下键确定配置文件:
#配置文件名
spring.application.name
#配置文件扩展名
spring.cloud.nacos.config.file-extension
#配置文件所在的组名
spring.cloud.nacos.config.group
#此处主要是测试是否能读取yaml格式的配置文件
一、添加依赖
1.Nacos配置中心依赖文件:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
2.引入该 spring-cloud-context.jar 使 bootstrap.properties 配置文件即可生效!
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
二、bootstrap.properties配置文件使用
1.只导入nacos服务器上的单个配置文件rs.yaml,组别为RS_EXAMPLE
#nacos服务ip+port
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#此程序要导入nacos上的配置文件名,默认扩展名是properties
spring.application.name=rs
#指定配置文件的扩展名,不指定的话默认properties
spring.cloud.nacos.config.file-extension=yaml
#指定配置文件的group,不指定的话默认DEFAULT_GROUP
spring.cloud.nacos.config.group=RS_EXAMPLE
三、nacos控制台添加配置文件
1.上浏览器访问nacos控制台界面,地址http://127.0.0.1:8848/nacos
【解释】该地址为部署nacos服务的地址
2.按下图所示内容添加rs.yaml文件
四、新建java类
1.创建如下标准spring boot启动类
2.读取nacos控制台已填写好的配置文件rs.yaml上的内容,user和id
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user");
String userAge = applicationContext.getEnvironment().getProperty("id");
System.err.println("user name :"+userName+"; age: "+userAge);
}
}
五、启动程序
1.启动程序,观察控制台输出
场景二:单个properties测试
某应用只导入单个配置文件,设置如下键确定配置文件:
#配置文件名
spring.application.name
#配置文件扩展名
spring.cloud.nacos.config.file-extension
#配置文件所在的组名
spring.cloud.nacos.config.group
#此处主要是测试是否能读取properties格式的配置文件
一、添加依赖
1.Nacos配置中心依赖文件:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
2.引入该 spring-cloud-context.jar 使 bootstrap.properties 配置文件即可生效!
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
二、bootstrap.properties配置文件使用
1.只导入nacos服务器上的单个配置文件cbb-redis.properties,组别为CBB_EXAMPLE
#nacos服务ip+port
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#此程序要导入nacos上的配置文件名,默认扩展名是properties
spring.application.name=cbb-redis
#指定配置文件的扩展名,不指定的话默认properties
spring.cloud.nacos.config.file-extension=properties
#指定配置文件的group,不指定的话默认DEFAULT_GROUP
spring.cloud.nacos.config.group=CBB_EXAMPLE
三、nacos控制台添加配置文件
1.上浏览器访问nacos控制台界面,地址http://127.0.0.1:8848/nacos
【解释】该地址为部署nacos服务的地址
2.按下图所示内容添加cbb-redis.properties文件
四、新建java类
1.创建如下标准spring boot启动类
2.读取nacos控制台已填写好的配置文件cbb-redis.properties上的内容,cbb和abc
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("cbb");
String userAge = applicationContext.getEnvironment().getProperty("abc");
System.err.println("user name :"+userName+"; age: "+userAge);
}
}
五、启动程序
1.启动程序,观察控制台输出
场景三:正常使用场景
某应用需导入多个配置文件,设置如下键确定配置文件:
#配置文件名+扩展名
spring.cloud.nacos.config.ext-config[0].data-id
#配置文件所在组别
spring.cloud.nacos.config.ext-config[0].group
#该配置文件是否热部署
spring.cloud.nacos.config.ext-config[0].refresh
#此处主要测试是否能读取多个配置文件,并测试是否实现热部署(在不重启应用的情况下,更改配置文件,配置文件生效)
一、添加依赖
- Nacos配置中心依赖文件:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
- 引入该 spring-cloud-context.jar 使 bootstrap.properties 配置文件即可生效!
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
二、bootstrap.properties配置文件使用
1.导入多个配置文件
#多个配置文件
#nacos服务ip+port
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#第一个配置文件
spring.cloud.nacos.config.ext-config[0].data-id=cbb-datasource.properties
spring.cloud.nacos.config.ext-config[0].group=CBB_EXAMPLE
spring.cloud.nacos.config.ext-config[0].refresh=true
#第二个配置文件
spring.cloud.nacos.config.ext-config[1].data-id=cbb-redis.properties
spring.cloud.nacos.config.ext-config[1].group=CBB_EXAMPLE
spring.cloud.nacos.config.ext-config[1].refresh=true
#第三个配置文件
spring.cloud.nacos.config.ext-config[2].data-id=rs.yaml
spring.cloud.nacos.config.ext-config[2].group=RS_EXAMPLE
spring.cloud.nacos.config.ext-config[2].refresh=true
三、nacos控制台添加配置文件
1.配置文件cbb-datasource.properties
2.配置文件cbb-redis.properties
3.配置文件rs.yaml
四、新建java类
1.创建如下标准spring boot启动类
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
}
}
2.创建UserController类
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserConfig userConfig;
/**
* http://localhost:8080/user/get
*/
@GetMapping()
public String get() {
System.err.println("CBB_EXAMPLE 的 cbb-redis.properties 配置文件的 cbb="+userConfig.getCbb());
System.err.println("CBB_EXAMPLE 的 cbb-datasource.properties 配置文件的 spring.datasource.url="+userConfig.getUrl());
System.err.println("RS_EXAMPLE 的 rs.yaml 配置文件的 user="+userConfig.getUser());
return "nacos is running ok!" ;
}
}
@Configuration
class UserConfig{
/**
* CBB_EXAMPLE 的 cbb-datasource.properties 配置文件的 spring.datasource.url
*/
@Value(value = "${spring.datasource.url}")
private String url;
/**
* CBB_EXAMPLE 的 cbb-redis.properties 配置文件的 cbb
*/
@Value("${cbb}")
private String cbb;
/**
* RS_EXAMPLE 的 rs.yaml 配置文件的 user
*/
@Value("${user}")
private String user;
public UserConfig(){
}
@Bean
public UserConfig getUserConfig(){
return new UserConfig();
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getCbb() {
return cbb;
}
public void setCbb(String cbb) {
this.cbb = cbb;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}
五、启动程序
1.启动程序
2.浏览器访问http://localhost:8080/user
3.观察控制台输出
六、热部署测试
1.上nacos控制台更改配置文件
2.访问浏览器http://localhost:8080/user
3.观察控制台输出
更改了配置后,监听到配置文件被修改,但限于此例在程序启动时就注入了一个已经初始化好的UserConfig的bean;若不重启应用的话,该bean的属性不改变。
场景四:热部署
场景三中未实现热部署;目前测试热部署需要重新搞一个pom.xml文件
一、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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--实现热部署@EnableNacosConfig-->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-spring-context</artifactId>
<version>0.3.3</version>
</dependency>
</dependencies>
</project>
二、启动类添加注解
1.启动类上添加注解@EnableNacosConfig;使应用接入nacos服务
2.启动类上添加注解@NacosPropertySources;导入nacos上的配置文件,可设置autoRefreshed选择是否热部署
package com.example.demo;
import com.alibaba.nacos.api.annotation.NacosProperties;
import com.alibaba.nacos.spring.context.annotation.config.EnableNacosConfig;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySources;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySources(@NacosPropertySource(dataId = "cbb-datasource.properties", groupId = "CBB_EXAMPLE", autoRefreshed = true))
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
三、添加示例类
1.在需要读取配置文件的变量上添加注解@NacosValue;可设置autoRefreshed选择是否热部署;
package com.example.demo.controller;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user2")
public class UserController2 {
@NacosValue(value = "${spring.datasource.url}",autoRefreshed = true)
private String str;
/**
* http://localhost:8080/user/get
*/
@GetMapping()
public String get() {
System.err.println(this.str);
return "nacos is running ok!";
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
四、启动程序
1.启动程序
2.浏览器访问http://localhost:8080/user2
3.观察控制台输出
4.更改nacos上的配置文件
5.浏览器再次访问http://localhost:8080/user2
6.观察控制台输出
7.热部署成功!在不重启应用的情况下,发现更改后的配置生效,输出了更改后的配置内容