适用场景:
1、IOC容器完成启动就想加载进来的数据
2、多个已经定义好的组件,想在使用的时候通过一行代码就全部拿到
3、等等....
联想:@Autowired、@Resources等也可以类似使用
玩法(简单介绍两个,其中的原理自己可以琢磨)
一、系统启动的时候就完成某些数据的加载
例:我想在系统启动的时候就查出所有快递公司(这里使用的是dao,用的是mybatis)
public class ExpressCompanyDao extends AbstractDao<ExpressCompany> {
private static final String classStr = ExpressCompanyDao.class.getName();
@Autowired
public List<ExpressCompany> queryAll() {
return sqlSessionTemplate.selectList(classStr+".queryAll");
}
}
二、同时加载全部插件
例:支付插件很多我想通过简单的方式全部加载
父类(其中的抽象方法交给子类去实现)
public abstract class PaymentPlugin implements Comparable<PaymentPlugin>
插件一、
@Component("yeepayPlugin")
public class YeepayPlugin extends PaymentPlugin
插件二、
@Component("tenpayPartnerPlugin")
public class TenpayPartnerPlugin extends PaymentPlugin
....
他们都继承了PaymentPlugin
如果想要在使用的时候就能直接拿到,一行代码就可以了
@Autowired
private List<PaymentPlugin> paymentPlugins = new ArrayList<PaymentPlugin>();
这样就可以拿到全部插件了