组件注册(5)-FactoryBean

69 阅读1分钟

通过FactoryBeanSpring容器注册组件


  1. 编写工厂bean(实现FactoryBean接口)

    public class Person {
    }
    
    
    public class PersonFactoryBean implements FactoryBean<Person> {
    
        @Override
        public Person getObject() throws Exception {
            return new Person();
        }
    
        @Override
        public Class<?> getObjectType() {
            return Person.class;
        }
    
        @Override
        public boolean isSingleton() {
            return true;
        }
    }
    
  2. 配置类MainConfig.java

    @Configuration
    public class MainConfig {
    
        @Bean
        public PersonFactoryBean personFactoryBean() {
            return new PersonFactoryBean();
        }
    
    }
    
  3. 编写测试类,控制台打印结果

    public class MainTest {
    
        public static void main(String[] args) {
    
            AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
            //获取person对象
            Class<?> bean = applicationContext.getBean("personFactoryBean").getClass();
            System.out.println("bean的类型:"+bean);
            //获取personFactoryBean对象,前缀'&'
            Class<?> bean2 = applicationContext.getBean("&personFactoryBean").getClass();
            System.out.println("bean2的类型:"+bean2);
        }
    
    }
    

    factoryBeanTest.png

代码地址