ApplicationContextAware使用理解

当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象。

(2)ApplicationContextAware配合自定义注解扫描,把数据加载到一个公共map中:

@Component("crsDealMap")
public final class DealMap implements ApplicationContextAware {
    private static final Logger LOGGER = LoggerFactory.getLogger(DealMap.class);
    private static final Map<String, Object> DEAL_MAP = new HashMap<>(16);
    /**
     * 功能描述: 获取初始化信息
     * @return void
     * @author zhouyunjian
     * @date 2019/12/3 16:25
     */
    public static  Map<String, Object>  getDealMapInfo(){
        return DEAL_MAP;
    }

    /**
     * 功能描述: 项目启动时,加载规则处理相关流程
     *
     * @param act
     * @return void
     * @author zhouyunjian
     * @date 2019/12/3 16:25
     */
    @Override
    public void setApplicationContext(ApplicationContext act) {
        //加载风险规则处理流程
        loadRiskRuleType(act);
    }

    private void loadRiskRuleType(ApplicationContext act) {
        LOGGER.info("[STR]初始化加载风险规则处理流程");
        Map<String, Object> objectMap = act.getBeansWithAnnotation(RiskRuleType.class);
        for (Map.Entry<String, Object> entry : objectMap.entrySet()) {
            Object object = entry.getValue();
            RiskRuleType riskRuleType = object.getClass().getAnnotation(RiskRuleType.class);
            String name = riskRuleType.value();
            DealMap.DEAL_MAP.put(name, object);
            LOGGER.info("加载流程到map中name为[{}]服务为[{}]",name,object);
        }
        LOGGER.info("[END]初始化加载风险规则处理流程完成");
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值