读取nacos文件的方式
读取nacos的配置文件的方式
文章目录
- 读取nacos的配置文件的方式
- 前言
- 一、使用SDK的方式去读取
- 二、使用Spring来读取配置文件
- 三、使用SpringBoot来读取配置文件
- 四、使用SpringCloud来读取配置文件
- 五、读取多个配置文件
- 总结
前言
今天学习了一下从SDK到SpringCloud的各种方式去读取nacos文件。记下来供以后使用。
一、使用SDK的方式去读取
- 在pom.xml里面引入nacos.client的包。代码如下:
<dependency> <groupId>com.alibaba.nacosgroupId> <artifactId>nacos-clientartifactId> <version>2.0.4version> 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来读取配置文件
在pom.xml中引入nacos-spring-context包,代码如下(示例):
<dependency> <groupId>com.alibaba.nacosgroupId> <artifactId>nacos-spring-contextartifactId> <version>1.1.1version>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)@RestControllerpublic 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(); }}
使用@value注解的形式读取你想要的配置文件,代码如下(示例):
@Componentpublic class NacosInfo { @Value("${feign.sentinel.enabled}") private String dataId; public String getdataId(){ return dataId; }}
三、使用SpringBoot来读取配置文件
在pom.xml中引入nacos-config-spring-boot-starter包,代码如下(示例):
<dependency> <groupId>com.alibaba.bootgroupId> <artifactId>nacos-config-spring-boot-starterartifactId> <version>0.2.12version>dependency>
因为该包包含了Spring注解部分的内容,所以直接使用Spring的注解方式也是行得通的,直接声明在启动类上就行。这里主要是使用application.properties的方式去实现,代码如下(示例):
nacos.config.server-addr=127.0.0.1:8848nacos.config,dataId=application-dev.yml
使用@value注解的形式读取你想要的配置文件,代码如下(示例):
@Componentpublic class NacosInfo { @Value("${feign.sentinel.enabled}") private String dataId; public String getdataId(){ return dataId; }}
四、使用SpringCloud来读取配置文件
在pom.xml中引入spring-cloud-starter-alibaba-nacos-config包,代码如下(示例):
<dependency> <groupId>com.alibaba.cloudgroupId> <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId> <version>2.2.8.RELEASEversion>dependency>
这里使用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。
使用@value注解的形式读取你想要的配置文件。值读到后直接自动装配对象,调用即可。代码如下(示例):
@Componentpublic 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则是只有自己会使用,其他服务不会使用。
总结
记录读取nacos文件的各种方式,后续会加上注册nacos的部分。
来源地址:https://blog.csdn.net/silence__is_gold/article/details/129423174
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341