BeanFactory和FactoryBean的区别

beanfactory是spring的bean工厂,有getbean方法,从里面可以获得对象;
Factorybean是spring的一个bean,自定义的bean可以实现这个FactoryBean,重写里面三个方法;

FactoryBean的使用方式(代码演示)

首先创建一个类SunBean实现FactoryBean接口,加上component注解交给spring管理,改名称为"SUN",重写里面三个方法,注意这个getObject()方法,里面返回的是
我创建的一个另外的自定义对象wolf.


@Component("SUN")
public class SunBean implements FactoryBean {
    @Override
    public Object getObject() throws Exception {
        return new wolf();
    }

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

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

wolf:

public class wolf {
}

下面是客户端测试的代码:

public class Test {
    public static void main(String[] args) {

        AnnotationConfigApplicationContext al=new AnnotationConfigApplicationContext(SunBean.class);
        SunBean sunchengwu = (SunBean) al.getBean("SUN");

    }
}

此时报了类型转换异常


image.png

说这个Bean是wolf类型,不能强转SunBean,说明按照名字拿的是getObject方法返回的对象

但是如果我在"SUN"前面加个"&"
此时就不会报错,此时拿的就是继承FactoryBean的那个Bean


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容