适用场景:

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>();

这样就可以拿到全部插件了

05-13 21:57