在使用springcloud的时候,提供了分布式配置中心的功能,可以通过git、gitlab、SVN等对微服务项目中用到的配置文件进行统一管理了
nacos基于springcloud也提供了一套分布式配置的组件,使用nacos提供的配置组件也可以做到对项目中使用到的配置文件做统一管理,并且支持不同环境动态切换,动态刷新,界面操作管理,相比使用git的配置中心从使用上来说更加方便更容易运维
nacos的配置文件的管理控制台和注册中心在一个管控台接口,如下图所示
1、添加pom依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
2、引入配置文件
spring:
application:
name: service-consumer
cloud:
nacos:
register-enabled: true
discovery:
server-addr: IP:8848
使用nacos的配置中心的功能非常简单,只需要把本地的配置文件移动到nacos上即可,首先我们创建一个名字叫做:service-consumer-config.yaml的配置文件,如下
在下图黑色的编辑区域选择yaml格式的文件把项目中的配置文件粘贴进去即可
修改完毕后发布即可,然后就可以在配置列表中看到刚刚自己添加的这个配置文件,
3、本地引入nacos配置文件
在springcloud中,我们使用git或者svn做配置中心的时候,大家一定还记得,项目中要引用远程的配置文件,以配置中心的IP加服务名导入,一般放在配置中心的文件都是公共的配置,如果项目还有自己的配置要使用,怎么办呢?我们知道,springboot对配置文件的加载是有一定的优先级的,但优先级最高的是叫做bootstrap.yml的这个配置文件
因此在使用nacos组做配置管理的时候,公共配置放在nacos中,项目要引用配置中心的文件,需要通过bootstrap.yml这个文件去引入,因此bootstrap.yml配置如下:
server.port=8082
spring.application.name=service-consumer-config
spring.cloud.nacos.config.server-addr=IP:8848
spring.cloud.nacos.config.file-extension=yaml
4、测试配置
在刚刚创建的配置文件里面添加一段配置,待会儿我们在程序中测试一下是否能读到这段配置
@Value("${user.name}")
private String userName;
//http://localhost:8082/getConfigName
@GetMapping("/getConfigName")
public String getConfigName(){
return userName;
}
启动函数
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApp {
public static void main(String[] args) {
SpringApplication.run(ConsumerApp.class,args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
启动程序,浏览器访问:http://localhost:8082/getConfigName,可以看到,成功访问到了我们的配置文件
在实际开发中,经常面临多环境的切换问题,开发、测试、生产等都是使用不同的配置文件,在nacos中,也提供了对分布式环境下多配置文件的管理功能,使用该功能,可以方便的对开发中的不同环境的配置文件进行切换
首先在nacos管控台上,我们创建两个生产端服务使用到的配置文件,比如这里的两个配置文件分别叫做:service-provider-config.yaml 和 service-provider-config-prod.yaml,命名的规范一般遵照约定的习惯,通过不同的后缀名做区分,比如test代表测试,prod代表生产等
在两个配置文件中,我们分别加入了两段配置代码方便一会儿做演示,nacos上的配置到这里结束了,下面我们看具体的程序配置
在程序中资源目录下面,我们创建两个不同的配置文件用于区分不同的环境,只需要在配置文件中加入如下代码即可,
通过下面的这个配置用于在程序启动的时候区分不同的环境,其他的配置保持不变
spring.profiles.active=prod
测试程序:
@Value("${env.name}")
private String envName;
@GetMapping("/getEnvName")
public String getEnvName(){
return envName;
}
首先使用开发的环境测试配置文件,启动程序,浏览器访问:http://localhost:8070/getEnvName,开发环境的配置成功读取到了
再将程序以prod的方式启动,可以通过打jar包启动,或者直接在idea中进行手动指定,然后启动程序
浏览器访问同样的地址,成功读取到了配置信息
总的来说,使用nacos作为配置中心进行配置文件的管理还是很方便的,假如我们在控制台手动修改了配置或者添加了新的配置,如果需要程序能够快速读取到,只需要在controller中加入注解@RefreshScope即可,这里我已经测试过了,有兴趣的同学可以自己尝试一下,相比使用springcloud的这个动态刷新配置功能要方便不少
本篇大致分享了一下如何在程序中使用nacos的分布式配置管控台的使用以及在程序中的集成,希望对看到的小伙伴有用,最后,感谢观看!