基于Spring的 支付策略模式@Autowired注解的特殊功能应用

本文介绍了如何在实际项目中使用Spring的@Autowired注解来简化多种支付方式的处理,避免大量if判断或switch case。通过Autowired注解,可以将所有符合Map中value类型的Bean自动注入,用Bean的id或name作为Map的key,实现支付策略的动态选择。文章提供了controller注入的例子,并展示了支付策略接口和枚举类的定义。
摘要由CSDN通过智能技术生成

使用场景
实际项目上中遇到交易使用多种支付方式,如微信原生支付,微信小程序支付,微信公众号支付,支付宝之支付等等等。简化多个if判断,switch case 使用。

使用介绍
1、首先说一下spring Autowired 注解除了我们正常使用的之外还有一点:
@Autowired标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会将容器中所有类 型符合 Map 的 value 对应的类型的 Bean 增加进来,用 Bean 的 id 或 name 作为 Map 的 key。非常牛X的操作。
需要注意的是:应用于map的时候key必须为String类型(实现类的名字)
看下源码
在这里插入图片描述
好啦 直接上代码:
cotroller注入

public class x{
   
@Autowired
	private Map<String, PayStrategy> payStategies;

@RequestMapping(value = "/pay",method = RequestMethod.GET)
public Object pay(int storeType, String version,  int channel,.....) {
   

PayStrategy payStrategy = null;
PayChannelStrategyEnum payChannelStrategyEnum = PayChannelStrategyEnum.getPayChannelStrategyEnum(channel);
		if (payChannelStrategyEnum == null) {
   
			outMap.put("code", "fail");
			outMap.put(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值