一、(Spring)项目 一个接口多个实现,指定实现类

目的:一个接口多个实现时,根据不同的条件调用不用的实现

1、有如下接口

1
2
3
public interface Pay {
public Object pay(Map<String,Object> map);
}

2、有如下两个实现

实现一:

1
2
3
4
5
6
7
@Service("weixinPay")
public class WeixinPay implements Pay{
@Override
public Object pay(Map<String, Object> map){
return "weixinpay";
}
}

实现二:

1
2
3
4
5
6
7
@Service("aliPay")
public class AliPay implements Pay{
@Override
public Object pay(Map<String, Object> map){
return "alipay";
}
}

3、根据不同的条件调用不同的实现

方法一:

1
2
3
4
5
@Resource(name="weixinPay")
ShopPay weixinPay;

@Resource(name="aliPay")
ShopPay aliPay;

方法二:

1
2
3
4
5
6
7
@Autowired
@Qualifier("weixinPay")
ShopPay weixinPay;

@Autowired
@Qualifier("aliPay")
ShopPay aliPay;