前些日子,因为项目需要开发多通道支付,但是多通道只有一个入口,所以必须实现多继承,现在总结一下:
1、首先先新建一个抽象类,里面包含两个抽象方法:
2、多通道的各个类,分别继承这个抽象类,实现这两个方法
3、新建一个Spring的工厂类,实现ApplicationContextAware接口(这个才是重头戏)
看下ApplicationContextAware源码:
很明显,Aware是一个空接口,ApplicationContextAware接口只有一个方法,所以我们只复写setApplicationContext()方法即可。
1)实现了该接口之后,Spring容器会自动检测所有的Bean,如果发现某个Bean实现了ApplicationContextAware接口,Spring容器就会在创建了该Bean之后,自动调用该Bean的setApplicationContextAware()方法。
2)该方法中有一个getBeansOfType(Class<T> type)方法,该方法会把所有type类型的类实例化,放进map中。
3)然后我们可以遍历这个map,根据我们自己设置的key的生成规则,放进自己创建的map中,便于后期获取。
4)getAuthMode(String authType)方法便是从自己创建的map中获取实例。
5)获取到相应实例之后,就可以调用不同类中的业务逻辑方法了。