javaee论坛

普通会员

225648

帖子

344

回复

358

积分

楼主
发表于 2019-10-30 11:14:11 | 查看: 286 | 回复: 0

创建自定义工厂Bean,实现FactoryBean。

importorg.springframework.beans.factory.FactoryBean;publicclassPersonFactoryBeanimplementsFactoryBean<Person>{@OverridepublicPersongetObject()throwsException{System.out.println("getObject...");returnnewPerson();}@OverridepublicClass<?>getObjectType(){returnPerson.class;}@OverridepublicbooleanisSingleton(){returntrue;}}

配置类,将创建的工厂Bean注册到IOC容器。

importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassConfig{@BeanpublicPersonFactoryBeanpersonFactoryBean(){returnnewPersonFactoryBean();}}

Person类

publicclassPerson{}

测试类

@Testpublicvoidtest01(){//创建ioc容器AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(Config.class);Objectbean1=context.getBean("personFactoryBean");Objectbean2=context.getBean("&personFactoryBean");PersonFactoryBeanpersonFactoryBean=context.getBean(PersonFactoryBean.class);System.out.println(bean1);System.out.println(bean2);System.out.println(personFactoryBean);//关闭容器context.close();}

输出结果:

getObject...com.example.demo.Person@4f18837acom.example.demo.PersonFactoryBean@359f7cdfcom.example.demo.PersonFactoryBean@359f7cdf

发现通过自定义工厂Bean的name来获取Bean,是通过getObject方法生成Bean的。


您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017