Spring自定义注解的动态参数

      最近写了一个自定义注解@OutHttp应用于方法其中包含参数url,但是测试和生产环境的url不一致。如果不通过动态参数的方法是无法适配测试和生产环境不一致的情况。

     在项目中使用的配置中心是携程的apollo,如果了解过apollo的人都知道,spring在启动过程中将Apollo中的配置通过请求将数据获取到应用并放置在context 环境变量envrioment的propertySource中。而propertySource是一个Map接口,只要获取到key就可以获取到value。而spring提供了占位符的处理方法,可以通过占位符获取到key。

    

@OutHttp(url = "https://www.baidu.com")
QueryPersonInfoResponse queryPersoninfo(QueryPersonInfoRequest request);

@OutHttp(url = "${execute.url}")
QueryPigInfoResponse queryPiginfo(QueryPigInfoRequest request);

在上面的代码块中一种是写死的url,第二种是配置式的url。

可以通过以下代码同时支持两种配置方式的读取。

// 注意 context是上下文,可以通过注解的方式获取上下文
/**
 * @AutoWired 
 * private ApplicationContext context;
*/
String url = outHttp.url();//outHttp是获取到的注解对象,如果获取到注解对象可以百度
//占位符处理器
PropertyPlaceholderHelper helper = new PropertyPlaceholderHelper("${","}");
String urlDeal = helper.replacePlaceholders(url,key->{
    return context.getEnvironment().getProperty(key);
});

 这样处理后获取到的urlDeal,对于OutHttp注解的方法一返回的是https://www.baidu.com,方法二返回的是apollo种返回的配置信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值