背景:
在进行微信公众号支付开发时,由于微信官方针对公众号支付,小程序支付等需要配置支付安全目录(也就是指定支付的二级域名路由),
但无奈开发环境和生产环境不能使用同一个路由,否则造成生产环境下的程序不断的启停,因此使用微信后台为开发公众号支付添加测试用的支付安全目录(测试用的域名或者路由),
但这样会造成一个问题,不但上线时有大堆的配置需要改成生产环境需要的配置,还需要将路由也更改成线上环境使用的路由,这样每次更新和维护都有一大堆地方需要修改,稍有不慎就会遗漏;
所以,使用"maven环境隔离"+"@RequestMapping(value = "${占位符}")"实现依据环境不同路由不同的动态路由;
第一,使用maven环境隔离配置好开发环境和生成环境使用的路由
(1)开发环境使用的安全目录(路由)
wechat.safe.url=pay
(2)生成环境使用的安全目录(路由)
wechat.safe.url=wc
(3)根据不同环境选择其中一个路由进行使用
第二,使用占位符配置路由
@Controller
@RequestMapping(value = "${wechat.safe.url}")//这里${wechat.safe.url},是读取配置文件wechat.payment.properties中的key名为wechat.safe.url属性
public class WxPayController {
//some method...
}
这里${}占位符就相当于@Value("${...}")中的占位符一样,会去读取配置文件中与占位符中的内容名称相同的key对应的value作为路由,并在spring容器初始化时进行填充
所以在开发环境时,该路由是pay,而在生产环境时,该路由是wc;
这样一来就不用在上线和开发测试时修改一大堆路由信息了,只要在上线前切换使用的环境配置即可;
SpringMVC依照配置文件配置路由(适用于生成环境和开发环境路由不同的情况)
原文:https://www.cnblogs.com/acelance/p/10820854.html