最近 接触一个电商系统后台,需要了解支付模块的开发时候,发现了这样一段有趣的代码
@Inject
private List<PaymentPlugin> paymentPlugins = new ArrayList<>();
@Override
public List<PaymentPlugin> getPaymentPlugins() {
Collections.sort(paymentPlugins);
return paymentPlugins;
}
业务层getPaymentPlugins()方法中没有任何查询.但是 paymentPlugins竟然有值,
public abstract class PaymentPlugin implements Comparable<PaymentPlugin> {
查询了系统各个配置以及SQL语句 没有相关的配置啊
在多方google 百度下,了解了
原来是spring @Inject 注解可以注入抽象类 或者接口的子类的集合
子类配置:
@Component("alipayPagePaymentPlugin")
public class AlipayPagePaymentPlugin extends PaymentPlugin {
很佩服这种思维.