• spring-5-AOP模拟


    1、FactoryBean与BeanFactory之间的区别

    BeanFactory:是spring中底层工厂类,getBean()方法最好的解释

    FactoryBean:如果自己的类中实现了FactoryBean会实现三个方法,其中会有一个Object getObject();直接上代码。

    package com.bean;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class TestBean {
    
        public void testBean(){
            System.out.println("TestBean");
        }
    }
    

      

    package com.bean;
    
    import org.springframework.beans.factory.FactoryBean;
    import org.springframework.stereotype.Component;
    
    @Component("bean_Factory")
    public class TestBeanFactory implements FactoryBean {
    
        public void testBeanFactory(){
            System.out.println("TestBeanFactory");
        }
    
        @Override
        public Object getObject() throws Exception {
            return new TestBean();
        }
    
        @Override
        public Class<?> getObjectType() {
            return TestBean.class;
        }
    }
    

      

    AnnotationConfigApplicationContext acc = new AnnotationConfigApplicationContext(Appconfig.class);
            TestBeanFactory testBeanFactory = (TestBeanFactory)acc.getBean("&bean_Factory"  );
            testBeanFactory.testBeanFactory();
    
            TestBean testBean = (TestBean)acc.getBean("bean_Factory"  );
            testBean.testBean();
    

      

    根据以上代码(主要测试中),我们可以看出bean_Factory和&bean_Factory返回两种不同的bean对象,所以得出以下结论

    结论:当实现了FactoryBean接口后,再容器中会注册两个对象,一个是getObject()方法返回的对象和自身对象。我们定义的名字@Component("xxx"),从容器中获取的是getObject()方法返回的对象,而&xxx返回的是自身对象

    为什么这样设计?使用场景?

    此方式用来提供给复杂的第三方,否则,第三方依赖的太多,如果是xml方式那么将是一种灾难,所以引出FactoryBean.getObject();

  • 相关阅读:
    BotVS开发基础—2.7 指标MACD
    BotVS开发基础—2.7 指标MA
    BotVS开发基础—2.5 策略交互
    BotVS开发基础—2.5 绘制图表
    BotVS开发基础—2.5 状态信息显示表格
    BotVS开发基础—2.4 获取订单、取消订单、获取未完成订单
    BotVS开发基础—2.3 下市价单 交易
    BotVS开发基础—2.2 下限价单 交易
    BotVS开发基础—2.1 账户、行情、K线、深度
    python的eval函数
  • 原文地址:https://www.cnblogs.com/gnwzj/p/11133295.html
Copyright © 2020-2023  润新知