String 占位符的使用

最近做一个项目,其中一个需要使用HTTP请求去请求系统外部的一个接口。一开始我是在代码里面写死,然后在用变量去替换的。

如下所示:

String url = "https://abc.com/aaa/Bbb/access_token?appid=" + appid + "&secret=" + secret + "&code=" + code + "&grant_type=123";

       其中appid,secret和code是三个变量,需要我的程序里面通过解码Base64的请求头和查询数据库得出的结果,一开始我是将这个url直接写在代码里面再用httpGet去获取请求结果,后来发现这样做的话,其实很不灵活。因为我在做的项目是Springcloud的微服务,要是想修改的时候,就得进去到代码里面的方法体去修改,维护起来相当麻烦。

这时候Spring的注入就起作用了,可以将请求url的值写在配置文件里面,再在请求头加上这样一句:

@Value("${wechatUrl.getAccessToken}")
private String getAccessTokenUrl;

在配置文件中写上

wechatUrl.getAccessToken=XXXXX(XXXXX是具体的url字符串)

这时候,这个值就会被注入为配置文件里面写的那个String,但是,这个时候问题来了,因为woodenURL里面是有变量的,需要在Service方法体里面去拼接才能拼接成可以成功请求的url,这个时候就可以用String的占位符来解决这个问题了。

 

首先,在配置文件中的赋值,需要赋予的值是

wechatUrl.getAccessToken=https://abc.com/aaa/Bbb/access_token?appid=%s&secret=%s&code=%s&grant_type=123

然后在Service的代码中处理是这样的:

String url = String.format(getAccessTokenUrl, wechat_appid, wechat_secret, code);

这样,通过String的方法就可以将后面添加的参数替换掉配置文件中的占位符"%s"。

 

还有一种方式的,下面是两个例子的比较:

Java代码:

 String stringFormat  = "lexical error at position %s, encountered %s, expected %s ";  
  
String messageFormat ="lexical error at position {0}, encountered {1}, expected {2}";  
  
System.out.println(String.format(stringFormat, 123, 100, 456));  
  
System.out.println(MessageFormat.format(messageFormat, new Date(), 50, 123));  

得出的结果是:

lexical error at position 123, encountered 100, expected 456   
  
lexical error at position 19-03-27 下午14:35, encountered 50, expected 123  

看了下MessageFormat的api说明,这个占位符参数功能更加强大点,支持type,style等限定。所以如果需要使用高级功能建议是使用MessageFormat。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值