背景:

在进行微信公众号支付开发时,由于微信官方针对公众号支付,小程序支付等需要配置支付安全目录(也就是指定支付的二级域名路由),

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

但无奈开发环境和生产环境不能使用同一个路由,否则造成生产环境下的程序不断的启停,因此使用微信后台为开发公众号支付添加测试用的支付安全目录(测试用的域名或者路由),

但这样会造成一个问题,不但上线时有大堆的配置需要改成生产环境需要的配置,还需要将路由也更改成线上环境使用的路由,这样每次更新和维护都有一大堆地方需要修改,稍有不慎就会遗漏;

所以,使用"maven环境隔离"+"@RequestMapping(value = "${占位符}")"实现依据环境不同路由不同的动态路由;

第一,使用maven环境隔离配置好开发环境和生成环境使用的路由

(1)开发环境使用的安全目录(路由)

wechat.safe.url=pay

SpringMVC依照配置文件配置路由(适用于生成环境和开发环境路由不同的情况) 随笔 第1张

(2)生成环境使用的安全目录(路由)

wechat.safe.url=wc

SpringMVC依照配置文件配置路由(适用于生成环境和开发环境路由不同的情况) 随笔 第2张

(3)根据不同环境选择其中一个路由进行使用

SpringMVC依照配置文件配置路由(适用于生成环境和开发环境路由不同的情况) 随笔 第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容器初始化时进行填充

 SpringMVC依照配置文件配置路由(适用于生成环境和开发环境路由不同的情况) 随笔 第4张

所以在开发环境时,该路由是pay,而在生产环境时,该路由是wc;

这样一来就不用在上线和开发测试时修改一大堆路由信息了,只要在上线前切换使用的环境配置即可; 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄