Nacos Config 使用
- 启动Nacos访问地址为:http://101.200.201.195:8848/nacos/
准备工作完成后进行服务消费。
第一步:创建一个Maven工程buscien-service-04
第二步:编辑pom.xml,加入必要的依赖配置
<!-- 导入bom依赖管理工程 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.opensource</groupId>
<artifactId>bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 业务服务所需依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
在bom工程中已经全部定义好了对应的版本所以我们在业务工程中就不需要定义依赖版本了,统一在bom中进行维护。
第三步:创建一个SpringBoot启动类,并且增加一个Http服务
/**
* SpringCloud Alibaba Nacos配置中心使用Demo
*
* @author WuWenTao
* @version 1.0
* @date 2020/9/2 14:18
*/
@SpringBootApplication
@EnableDiscoveryClient
public class BuscienService04Appl {
public static void main(String[] args) {
SpringApplication.run(BuscienService04Appl.class, args);
}
}
@RestController
@RequestMapping("/config/")
class NacosConfigPropertyController{
@Value("${configinfo:defualt}")
private String configinfo;
@GetMapping("configinfo")
public String configinfo(){
return this.configinfo;
}
}
以上内容非常清晰。NacosConfigPropertyController中请求服务返回一个configinfo字段,该字段源来于配置文件,如果没有则默认为default。
第四步:编写bootstrap.properties
server.port=4000
spring.application.name=buscien-service-04-app
spring.cloud.nacos.discovery.server-addr=101.200.201.195:8848
spring.cloud.nacos.config.enabled=true
spring.cloud.nacos.config.server-addr=101.200.201.195:8848
spring.cloud.nacos.config.prefix=buscien-service-04-app
spring.cloud.nacos.config.file-extension=properties
spring.profiles.active=dev
第五步:登陆Nacos管理界面,在配置列表中新增dev,test,uat三个环境配置作为三个环境不同配置。
里面内容为configinfo=对应配置的DataId
第六步:启动BuscienService04Appl,启动完成,在Nacos界面中能够看到注册上去的服务,访问BuscienService03Appl中的服务接口:
http://localhost:4000/config/configinfo
目前bootstrap.properties中的配置为:spring.profiles.active=dev
访问服务接口页面打印:buscien-service-04-app-dev.properties
将bootstrap.properties中的配置为:spring.profiles.active=uat
访问服务接口页面打印:buscien-service-04-app-uat.properties
这里是通过bootstrap.properties中的spring.profiles.active指定不同环境获取不同的配置,
并且获取配置文件的规则为:${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
第六步:实现Nacos实时刷新配置,在NacosConfigPropertyController类上增加注解@RefreshScope代表这个类中的@Value属性为实时刷新的。在类上加上注解后重启服务。
首次访问服务:http://localhost:4000/config/configinfo
访问服务接口页面打印:buscien-service-04-app-uat.properties
然后将Nacos页面中的DataId为buscien-service-04-app-uat.properties中的configinfo修改为:
configinfo=配置实时刷新1
再次访问服务:http://localhost:4000/config/configinfo
访问服务接口页面打印:配置实时刷新1
注:配置实时刷新并不是在Nacos中已修改就能够生效的,有秒级延迟
源码地址:https://github.com/450255266/spring-cloud-alibaba
Nacos地址对外开放:http://101.200.201.195:8848/nacos/