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注解第04课 @Import

Spring开发2 spring基础及组件使用2(conditional,import,factorybean)

spring注解第03课 按条件加载Bean @Conditional

Spring注解@驱动开发

Spring第四天--SSH整合