美文网首页
FactoryBean执行方式

FactoryBean执行方式

作者: momdiemg | 来源:发表于2020-07-15 19:26 被阅读0次

    xml定义一个factory bean,对应的对象是UserFactoryBean

    public static void main(String[] args) {
            BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath:META-INF\\bean-creation-context.xml");
            User user3 = beanFactory.getBean("user-by-factoryBean", User.class);
            System.out.println(user3);
    
    
     <bean id="user-by-factoryBean" class="com.lhz.spring.bean.factory.UserFactoryBean"/>
    
    public class UserFactoryBean implements FactoryBean<User> {
        @Override
        public User getObject() throws Exception {
            User user = new User();
            user.setId(3);
            user.setName("lhz factoryBean");
            return user;
        }
    
    
    
        @Override
        public Class<?> getObjectType() {
            return User.class;
        }
    }
    
    

    追踪User user3 = beanFactory.getBean("user-by-factoryBean", User.class);创建过程

    image.png
    image.png

    进去AbstractBeanFactory,跳到断点处,进入子类AbstractAutowireCapableBeanFactory重写的getObjectForBeanInstance方法


    image.png

    再进去AbstractAutowireCapableBeanFactory,走到断点,最终还是调用父类AbstractBeanFactory的
    getObjectForBeanInstance方法


    image.png

    进入


    image.png

    进入FactoryBeanRegistrySupport,


    image.png

    跳到这个类的doGetObjectFromFactoryBean方法

    image.png

    这就是我们实现FactoryBean接口的实现方法,再返回这个对象


    image.png

    并放入缓存


    image.png

    相关文章

      网友评论

          本文标题:FactoryBean执行方式

          本文链接:https://www.haomeiwen.com/subject/oyejhktx.html