Spring Cloud Config基于服务发现引用公共文件

Spring Cloud 的配置文件是bootstrap或者application两个,如果服务配置过多那么文件内容肯定较多,在普通的spring 项目中都是独立出来一个文件用于标注不同的需求内容,例如数据库,redis等,然后再import导入进来就可以使用,在Spring Cloud中要如何引用呢,在使用过程中发现了几种方式都记录下来,希望对正在学习spring Cloud的“学友”有所帮助。

一、使用:spring.application.name

这种方式对文件名称没有要求,只需要在spring.application.name中增加引用文件即可。
项目结构
配置引用
config-client和common两个文件内容简单字符串定义:

  • config-client
java: helloWorld
  • common
common: commonvalue

在config-client端配置获取两个值

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class SpringcloudConfigClientApplication {

    @Value("${java}")
    private String java;

    @Value("${common}")
    private String common;

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudConfigClientApplication.class, args);
    }

    @GetMapping("/sayHello")
    public String  sayHello(){
        System.out.println("say java :" + java);
        System.out.println("common :"+ common);
        return "config-client : "+java+"------common : "+common;
    }
}

分别启动consul(端口8500)、config-server(端口9000)、config-client(端口8000),访问http://localhost:8000/sayHello,可以看到返回值以及后台打印与测试一致。
测试结果
注意: 如果调用配置中心获取配置的服务(config-client)还对其他实例提供的在注册到注册中心时采用的是spring.application.name的方式会变为config-client-common,所以在调用的时候会有问题,如果使用的是consul,那么结合之前发的一篇文章“Spring Cloud Consul 多实例注册问题”可以解决这个问题,需要在consul中配置service-name,保证注册名称与应用名一致,使用Eureka的正在研究如何解决,解决后会发文章说明。

二、使用spring.profiles.include

使用这种方式需要保证引用的外部文件需与本应用的主文件一致,例如:application.yml,则外部文件为application-common.yml。

  • 同一应用
    直接使用include: common就能达到效果,大家可以自己测试,在这就不展示测试demo了。
  • 配置中心
    需要在对应的配置文件中添加,例如上文中使用的demo,则需要在config-server服务中的config-client-dev.yml文件中添加include: common
    以上两种方式均可以通过spring.profiles.include引用外部文件。

三、使用spring.profiles.active

这种方式也需要引用的文件要与应用的项目名称一致,例如config-client-dev.yml,config-client-common.yml,只需要在config-client应用的spring.profiles.active中定义 dev , common就可以正常使用了。

以上是在学习过程中测试出来的方式,若有不对请指正,或者有其他实现方式也请留言交流,希望本文对学习者有帮助。


在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值