spring注解第05课 FactoryBean
Posted 超轶绝尘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring注解第05课 FactoryBean相关的知识,希望对你有一定的参考价值。
1.工厂bean调用
@Configuration public class MainConfig2 {/** * 使用Spring提供的 FactoryBean(工厂Bean); * 1)、默认获取到的是工厂bean调用getObject创建的对象 * 2)、要获取工厂Bean本身,我们需要给id前面加一个& * &colorFactoryBean
* 与其他框架整合的时候用的多 */ @Bean public ColorFactoryBean colorFactoryBean(){ return new ColorFactoryBean(); } }
2.工厂bean
package com.atguigu.bean; import org.springframework.beans.factory.FactoryBean; //创建一个Spring定义的FactoryBean public class ColorFactoryBean implements FactoryBean<Color> { //返回一个Color对象,这个对象会添加到容器中 @Override public Color getObject() throws Exception { System.out.println("ColorFactoryBean...getObject..."); return new Color(); } @Override public Class<?> getObjectType() { return Color.class; } //是单例? //true:这个bean是单实例,在容器中保存一份 //false:多实例,每次获取都会创建一个新的bean; @Override public boolean isSingleton() { return false; } }
3.调用测试
@Test public void testImport(){ //工厂Bean获取的是调用getObject创建的对象 Object bean2 = applicationContext.getBean("colorFactoryBean"); Object bean3 = applicationContext.getBean("colorFactoryBean"); System.out.println("bean的类型:"+bean2.getClass()); System.out.println(bean2 == bean3); //工厂Bean获取的是ColorFactoryBean对象本身 Object bean4 = applicationContext.getBean("&colorFactoryBean"); System.out.println(bean4.getClass()); }
以上是关于spring注解第05课 FactoryBean的主要内容,如果未能解决你的问题,请参考以下文章
spring注解第02课 包扫描@ComponentScan@ComponentScans
Spring开发2 spring基础及组件使用2(conditional,import,factorybean)