场景一:单个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.热部署成功!在不重启应用的情况下,发现更改后的配置生效,输出了更改后的配置内容