您的当前位置:首页正文

Bean的工厂创建方式

来源:华拓网

使用工厂方式创建 Bean。
PersonBeanFactory

public class PersonBeanFactory implements FactoryBean<Person> {
    @Override
    public Person getObject() throws Exception {
        return new Person("工厂 Bean 的创建", 1);
    }

    @Override
    public Class<?> getObjectType() {
        return Person.class;
    }

    @Override
    public boolean isSingleton() {
        return true;
    }
}

getObject : 获取对象
getObjectType: 获取对象的类型
isSingleton: true 单实例 false:多实例

配置类

@Configuration
public class BeanFactoryConfig {

    @Bean
    public PersonBeanFactory personFactory() {
        return new PersonBeanFactory();
    }

}

测试代码

    @Test
    public void test8() {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(BeanFactoryConfig.class);
        Object personFactory = ctx.getBean("personFactory");
        System.out.println(personFactory.getClass());
    }

查看 personFactory 的类型,可以判断它是 me.sjl.bean.Person 还是 me.sjl.bean.PersonBeanFactory

结果


Person对象

如果想要获取 工厂 Bean 的对象,使用 getBean("&personFactory") 方式 。加 & 字符

    @Test
    public void test8() {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(BeanFactoryConfig.class);
        Object personFactory = ctx.getBean("&personFactory");
        System.out.println(personFactory.getClass());
    }
工厂对象本身