Spring加载后置处理器方式之模板方法

Spring加载后置处理器方式之模板方法

1. 未使用模板方法时

 public static void main(String[] args) {

        MyBeanFactory myBeanFactory = new MyBeanFactory();
        myBeanFactory.getBean();
    }

    static class MyBeanFactory {
        public Object getBean() {

            Object bean = new Object();
            System.out.println("构造...." + bean);
            System.out.println("依赖注入...." + bean);
            //需在此手动加载,代码高度耦合
            System.out.println("初始化...." + bean);
            return bean;
        }

    }

2. 使用模板方法后

仅需在生成对象后添加后置处理器,对MyBeanFactory无需修改,实现代码解耦和

 public static void main(String[] args) {

        MyBeanFactory myBeanFactory = new MyBeanFactory();
        myBeanFactory.addBeanPostProcessor(bean -> {
            System.out.println("解析了@Autowired");
        });
        myBeanFactory.addBeanPostProcessor(bean -> {
            System.out.println("解析了@Resource");
        });
        myBeanFactory.getBean();
    }

    static class MyBeanFactory {
        public Object getBean() {

            Object bean = new Object();
            System.out.println("构造...." + bean);
            System.out.println("依赖注入...." + bean);
            beanPostProcessors.forEach(i -> {
                i.inject(bean);
            });
            System.out.println("初始化...." + bean);
            return bean;
        }

        private List<BeanPostProcessor> beanPostProcessors = new ArrayList<>();

        public void addBeanPostProcessor(BeanPostProcessor beanPostProcessor) {
            beanPostProcessors.add(beanPostProcessor);
        }

    }

    static interface BeanPostProcessor {
        //增强依赖注入阶段,解析@Autowired @Resource注解
        public void inject(Object bean);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值