Springcloud获取nacos中的配置信息demo

文章介绍了如何在SpringBoot应用中使用Nacos进行配置管理,包括DataID的命名规则、配置Nacos服务器地址以及通过`@Value`注解注入Dubbo的相关配置。此外,展示了如何创建一个配置类来集中管理这些配置,并在其他服务中通过依赖注入使用这些配置。

Nacos config

Data ID 的命名格式是:{spring.application.name}.{file-extension}
其中的spring.application.name和file-extension在服务的yaml中配置。
在这里插入图片描述

测试代码

1. 配置nacos地址

spring:
  application:
    name: demo
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
      discovery:
        server-addr: localhost:8848
  main:
    allow-bean-definition-overriding: true
logging:
  level:
    com.alibaba.nacos.*: WARN

2. 获取配置并打印

ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
@SpringBootApplication
@ServletComponentScan
public class DemoApplication {

    public static void main(String[] args) throws InterruptedException {

        ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
        while (true) {
            //当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置
            String userName = applicationContext.getEnvironment().getProperty("dubbo.protocol.name");
            String userAge = applicationContext.getEnvironment().getProperty("dubbo.protocol.port");
            System.out.println("配置信息,名称:{},年龄:{}"+userName+" "+userAge);
            TimeUnit.SECONDS.sleep(1);
        }
    }
}

在这里插入图片描述

Demo代码

参考上面的测试代码,我们已经可以获得nacos中的配置信息,现在只需要创建专门一个config类,来获取即可。
注意下这里的value的包不要导错import org.springframework.beans.factory.annotation.Value;

# nacos中dubbo的配置信息
dubbo:
  scan:
    base-packages: com.example.demo.service
  protocol:
    name: dubbo
    port: 7702
  registry:
    address: nacos://localhost:8848
  consumer:
    timeout: 60000
    check: false
  application:
    name: ${spring.application.name}
  cloud:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class DubboConfig {

    @Value("${dubbo.scan.base-packages}")
    private String scanBasePackages;

    @Value("${dubbo.protocol.name}")
    private String protocolName;

    @Value("${dubbo.protocol.port}")
    private int protocolPort;

    @Value("${dubbo.registry.address}")
    private String registryAddress;

    @Value("${dubbo.consumer.timeout}")
    private int consumerTimeout;

    @Value("${dubbo.consumer.check}")
    private boolean consumerCheck;

    @Value("${spring.application.name}")
    private String applicationName;

    // getters and setters

}

这样我们就算配置成功了。

如果别的类还需要用到这些配置信息,我们还可以

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class SomeService {

    @Autowired
    private DubboConfig dubboConfig;

    public void someMethod() {
        String scanBasePackages = dubboConfig.getScanBasePackages();
        String protocolName = dubboConfig.getProtocolName();
        int protocolPort = dubboConfig.getProtocolPort();
        String registryAddress = dubboConfig.getRegistryAddress();
        int consumerTimeout = dubboConfig.getConsumerTimeout();
        boolean consumerCheck = dubboConfig.isConsumerCheck();
        String applicationName = dubboConfig.getApplicationName();
        // use these configuration properties
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值