我是靠谱客的博主 开放玉米,最近开发中收集的这篇文章主要介绍string format java 参数替换_.yml .properties文件下的参数值替换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在应用springboot开发时,经常将一些配置信息记录到.yml文件中,或者记录到.properties文件中,举个晓丽子,当我们在介入微信登录,或者微信支付等第三方接口时,我们会将

微信api接口的路径 url 配置到.yml 或者.properties文件中;我们就以下面这个 url 为例:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=PPID&secret=SECRET&code=CODE&grant_type=authorization_code

这是获取微信的access_token的接口,这里很明显要传入四个参数,appid,secret,code,grant_type,由于参数值是可变的,所以我们通常不会像下面那样直接配置到配置文件中;

下面是错误示范:

wechatOAuthTokenUrl:https://api.weixin.qq.com/sns/oauth2/access_token?appid=PPID&secret=SECRET&code=CODE&grant_type=authorization_code

如果我们在程序中提取wechatOAuthTokenUrl变量的值,那么对参数的赋值操作将变成一件非常棘手的事情。通常的做法是我们只配置url地址的前一小部分,即相当长时间不会改变的部分,即:

wechatOAuthTokenUrl=https://api.weixin.qq.com/sns/oauth2/access_token

然后再程序中,当我们想要发送请求的时候,只需要将4个参数构造成一个map即可发起请求,示例如下:

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

// 读取属性文件,一般不会这么做,集成Spring时可做配置

Properties properties = new Properties();

InputStream inputStream = new FileInputStream("src/main/resources/wechat.properties");

properties.load(inputStream);

String wechatOAuthTokenUrl = properties.getProperty("wechatOAuthTokenUrl");

// 参数map

Map map = new HashMap<>();

map.put("appid", "A");

map.put("secret", "B");

map.put("code", "C");

map.put("grant_type", "D");

// 请求参数,封装了url、参数、header等信息

RequestParam param = new RequestParam();

param.setUrl(wechatOAuthTokenUrl);

param.setBody(map);

// 发送请求

HttpClientUtil.getInstance().asyncSend(param);

}

那么还有没有其他方式呢?额,有,

1,采用java.text包下的MessageFormat类

采用该类,我们只需要将属性配置成如下格式即可:

wechatOAuthTokenUrl:https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type={3}

测试类如下:

@RestController

public class TestJobController{

@Value("${wechatOAuthTokenUrl}")

private String wechatOAuthTokenUrl;

@RequestMapping("/rep")

public String replaceWxUrl(){

// 使用MessageFormat对字符串进行参数替换

String format = MessageFormat.format(wechatOAuthTokenUrl, new Object[]{"PPID", "SECRET", "CODE", "authorization_code"});

System.out.println(format);

return format;

}

}

输出结果:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=PPID&secret=SECRET&code=CODE&grant_type=authorization_code

2、采用String.format()进行匹配

采用此方法,我们只需要将属性配置成如下格式即可:

wechatOAuthTokenUrl:https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=%s

测试类如下:

@RestController

public class TestJobController{

@Value("${wechatOAuthTokenUrl}")

private String wechatOAuthTokenUrl;

@RequestMapping("/rep2")

public String replaceWxUrl2(){

String format = String.format(wechatOAuthTokenUrl, new Object[]{"A", "B", "C", "D"});

System.out.println(format);

return format;

}

}

输出结果:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=A&secret=B&code=C&grant_type=D

最后

以上就是开放玉米为你收集整理的string format java 参数替换_.yml .properties文件下的参数值替换的全部内容,希望文章能够帮你解决string format java 参数替换_.yml .properties文件下的参数值替换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部