zoukankan      html  css  js  c++  java
  • 170315、spring:@Autowired等注解的别样玩法

    适用场景:

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

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

  • 相关阅读:
    临时文件服务器,配置共享文件夹
    封装扩展方法
    List.Insert
    VS 生成事件中xcopy失败
    创建型设计模式总结
    js提交图片转换为base64
    C#建造者模式
    echarts 立体柱
    k8s生产环境启用防火墙,要开启的端口
    一篇文章为你图解Kubernetes网络通信原理
  • 原文地址:https://www.cnblogs.com/zrbfree/p/6708795.html
Copyright © 2011-2022 走看看