关于nacos同一命名空间下拉取多个配置文件

项目场景:

关于nacos同一命名空间下拉取多个配置文件:

例如:一个类中用到不同配置文件中的属性值。


问题描述

只能拉取到第一个配置文件中的值:

最开始项目中的bootstrap.properties的代码如下

#dev
spring.application.name=gulimall-order
spring.cloud.nacos.server-addr=xxx:8848
#注册与发现
spring.cloud.nacos.discovery.namespace=bffcbbe4-b4e9-4f5f-95ad-d28dd6ee2014
spring.cloud.nacos.discovery.group=dev
#配置
spring.cloud.nacos.config.namespace=bffcbbe4-b4e9-4f5f-95ad-d28dd6ee2014
#指定拉取的配置文件类型,服务上用的是yaml,针对nacos上data-id是gulimall-order的情况
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.extension-configs[0].data-id=gulimall-order
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=gulimall-order2
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true

类中的代码如下:

@RestController
@RequestMapping("order/order")
@RefreshScope
public class OrderController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private ProductFeginSerice productFeginSerice;

    @Value("${order.name}")
    private String name;

    @Value("${order.id}")
    private String id;
    /**
     * 列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = orderService.queryPage(params);

        //testFegin
        R r = productFeginSerice.feginSave();

        return R.ok().put("page", page).put("feign", r.get("product")).put("订单名:",name).put("订单id:",id);


    }

虽然nacos里分组都是dev,但项目启动的时候就会导致拉取不到gulimall-order2的信息,报@Value(“${order.id}”)找不到


解决方案:

找了网上的案例,试着改了下data-id,加了后缀名,bootstrap.properties的代码如下:

#dev
spring.application.name=gulimall-order
spring.cloud.nacos.server-addr=xxx:8848
#注册与发现
spring.cloud.nacos.discovery.namespace=bffcbbe4-b4e9-4f5f-95ad-d28dd6ee2014
spring.cloud.nacos.discovery.group=dev
#配置
spring.cloud.nacos.config.namespace=bffcbbe4-b4e9-4f5f-95ad-d28dd6ee2014
#命名空间下拉取多个配置文件,针对nacos上data-id是gulimall-order.yml的情况
spring.cloud.nacos.config.extension-configs[0].data-id=gulimall-order.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=gulimall-order.yml
spring.cloud.nacos.config.extension-configs[1].group=pro
spring.cloud.nacos.config.extension-configs[1].refresh=true

这样的话spring.cloud.nacos.config.file-extension=yaml和spring.cloud.nacos.config.group=dev都不用指定了,会根据命名空间 + data-id + group 去拉取不同的配置文件,最终项目成功启动,nacos中两个配置文件中的order.name 与 order.id都能取到了,所以最终还是用法不对,取data-id尽量按照官方的来。
nacos截图如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
页面访问效果如下:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值