读取nacos的配置文件的方式
文章目录
- 读取nacos的配置文件的方式
- 前言
- 一、使用SDK的方式去读取
- 二、使用Spring来读取配置文件
- 三、使用SpringBoot来读取配置文件
- 四、使用SpringCloud来读取配置文件
- 五、读取多个配置文件
- 总结
前言
今天学习了一下从SDK到SpringCloud的各种方式去读取nacos文件。记下来供以后使用。
一、使用SDK的方式去读取
- 在pom.xml里面引入nacos.client的包。代码如下:
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>2.0.4</version>
</dependency>
这里默认你已经使用了spring启动所必要的包。
- 在一个可以实现交互的方法(Controller类方法也好,junit测试方法也行)的内部使用nacosFactory创建configService对象,然后调用getConfig方法输入nacos地址、dataId以及连接超时的阈值即可获得整个配置文件的内容,类型是String。代码如下:
public void getNacosInfo() {
String url = "http://localhost:8848/nacos";// nacos地址
String dataId = "application-dev.yml";// nacos配置文件的名字
String group = "DEFAULT_GROUP";// 所属组,一般默认,不需要你填
try {
Properties properties = new Properties();//为了将地址传入configService而创建的对象,人家方法要这类型
properties.put("serverAddr", url);
ConfigService configService = NacosFactory.createConfigService(properties);
String config = configService.getConfig(dataId, group, 5000);
// System.out.println(config);
//
}catch (Exception e) {
e.printStackTrace();
}
}
- 该方法还能实现监听功能,即一旦nacos的配置文件发生变化,你能够知道且能够做出相应的动作。代码如下:
// 监听application-dev.yml文件,一旦发生变换,在控制台输出
configService.addListener(dataId, group, new Listener() {
@Override
public Executor getExecutor() {
return null;
}
@Override
public void receiveConfigInfo(String s) {
System.out.println(s);
}
});
二、使用Spring来读取配置文件
1.在pom.xml中引入nacos-spring-context包,代码如下(示例):
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-spring-context</artifactId>
<version>1.1.1</version>
</dependency>
- 在启动类的class上加上注解@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = “http://localhost:8848/nacos”))以及@NacosPropertiesSource(dataId = “application-dev.yml”)。就是用注解的形式代替来之前的输入nacos地址和dataId。代码如下(示例):
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "http://localhost:8848/nacos"))
@NacosPropertySource(dataId = "application-dev.yml", autoRefreshed = true)
@RestController
public class WebApplication {
@RequestMapping("/meg", method = RequestMethod.GET)
public String getInfo() {
// NacosConfigration是个配置类,扫描了NacosInfo类,创建了NacosIndo的Bean。
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(NacosConfigration.class);
// nacosInfo类在下面
NacosInfo nacosInfo = context.getBean(NacosInfo.class);
return nacosInfo.getdataId();
}
}
3.使用@value注解的形式读取你想要的配置文件,代码如下(示例):
@Component
public class NacosInfo {
@Value("${feign.sentinel.enabled}")
private String dataId;
public String getdataId(){
return dataId;
}
}
三、使用SpringBoot来读取配置文件
1.在pom.xml中引入nacos-config-spring-boot-starter包,代码如下(示例):
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.12</version>
</dependency>
2.因为该包包含了Spring注解部分的内容,所以直接使用Spring的注解方式也是行得通的,直接声明在启动类上就行。这里主要是使用application.properties的方式去实现,代码如下(示例):
nacos.config.server-addr=127.0.0.1:8848
nacos.config,dataId=application-dev.yml
3.使用@value注解的形式读取你想要的配置文件,代码如下(示例):
@Component
public class NacosInfo {
@Value("${feign.sentinel.enabled}")
private String dataId;
public String getdataId(){
return dataId;
}
}
四、使用SpringCloud来读取配置文件
1.在pom.xml中引入spring-cloud-starter-alibaba-nacos-config包,代码如下(示例):
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.8.RELEASE</version>
</dependency>
2.这里使用bootstrap.properties来配置nacos的地址和dataId。除此之外,还可以配置查找文件的匹配方式。注意:这里的包没有包含注解方式的内容,所以如果你想继续使用注解的方式,你需要引入Spring方式的包,代码如下(示例):
spring.cloud.nacos.server-addr=127.0.0.1:8848 // nacos地址
spring.application.name=test //查找的文件名
spring.profiles.active=dev //匹配的变量
spring.cloud.nacos.config.file-extension=yml //匹配的后缀名
这里直接看,可能看不懂,所以还要介绍点东西:
1.首先,springcloud会默认匹配spring.application.name为文件名。
2.然后,它会去找spring.application.name + 后缀名 的文件,后缀名默认是properties。举个例子,我如果不声明yml,那么它会默认找test.properties文件。
3.最后, 它会去找spring.application.name + “-” + spring.profiles.active + 后缀名 的文件。这里的话,它会去找test-dev.yml文件。
当你想要的值在这三个文件中都存在时,它去找的优先级是3 -> 2 -> 1。
3.使用@value注解的形式读取你想要的配置文件。值读到后直接自动装配对象,调用即可。代码如下(示例):
@Component
public class NacosInfo {
@Value("${feign.sentinel.enabled}")
private String dataId;
public String getdataId(){
return dataId;
}
}
五、读取多个配置文件
这里我默认使用SpringCloud的方式读取多个配置文件。除了读取多个配置文件以为,用法与SpringCloud一致。
使用bootstrap.properties来配置nacos的地址和dataId。在读取主配置文件之外,加上若干个其他的配置文件,代码如下(示例):
// 主配置文件设置
spring.cloud.nacos.server-addr=127.0.0.1:8848 //nacos地址
spring.application.name=test //主配置文件名
spring.profiles.active=dev //匹配变量
spring.cloud.nacos.config.file-extension=yml //后缀名,同时也将读取到的文件转换成yml文件类型
// 其他配置文件设置
spring.cloud.nacos.config.extension-configs[0].data-id=application-dev.yml //其他文件名
// spring.cloud.nacos.config.shared-configs[0].data-id=application-dev.yml //与上一条功能一样
spring.cloud.nacos.config.extension-configs[0].file-extension=yml //其他文件后缀名
这里添加其他配置文件有两种方式,一种是shared-configs,另一种是extension-configs。功能是一样的。区别在于extension-configs的优先级更高。但它们都低于主配置。shared-configs代表的含义是该配置文件有其他服务会使用。而extension-configs则是只有自己会使用,其他服务不会使用。文章来源:https://www.uudwc.com/A/20vbq/
总结
记录读取nacos文件的各种方式,后续会加上注册nacos的部分。文章来源地址https://www.uudwc.com/A/20vbq/