读取nacos文件的方式

读取nacos的配置文件的方式

文章目录

  • 读取nacos的配置文件的方式
  • 前言
  • 一、使用SDK的方式去读取
  • 二、使用Spring来读取配置文件
  • 三、使用SpringBoot来读取配置文件
  • 四、使用SpringCloud来读取配置文件
  • 五、读取多个配置文件
  • 总结


前言

今天学习了一下从SDK到SpringCloud的各种方式去读取nacos文件。记下来供以后使用。


一、使用SDK的方式去读取

  1. 在pom.xml里面引入nacos.client的包。代码如下:
<dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.0.4</version>
 </dependency>

这里默认你已经使用了spring启动所必要的包。

  1. 在一个可以实现交互的方法(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();
        }

    }
  1. 该方法还能实现监听功能,即一旦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>
  1. 在启动类的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则是只有自己会使用,其他服务不会使用。


总结

记录读取nacos文件的各种方式,后续会加上注册nacos的部分。文章来源地址https://www.uudwc.com/A/20vbq/

原文地址:https://blog.csdn.net/silence__is_gold/article/details/129423174

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月15日 03:03
下一篇 2023年09月15日 03:05