Spring源码解析关于FactoryBean

下面翻译自spring官网

您可以实现org.springframework.beans.factory。为本身是工厂的对象提供FactoryBean接口。
FactoryBean接口是Spring IoC容器实例化逻辑的可插入点。如果您有复杂的初始化代码(用Java来表达比(可能)冗长的XML更好),那么您可以创建自己的FactoryBean,在类中编写复杂的初始化,然后将定制的FactoryBean插入到容器中。

FactoryBean接口提供了三种方法:
对象getObject():返回此工厂创建的对象的实例。实例可能被共享,这取决于这个工厂返回的是单例还是原型。
boolean isSingleton():如果FactoryBean返回单例,返回true;否则返回false。
类getObjectType():返回getObject()方法返回的对象类型,如果事先不知道该类型,则返回null。

FactoryBean的概念和接口在Spring框架的许多地方使用。Spring本身附带了50多个FactoryBean接口的实现。
当您需要向容器请求实际的FactoryBean实例本身而不是它生成的bean时,在调用ApplicationContext的getBean()方法时,在bean的id前面加上&符号。因此,对于id为myBean的给定FactoryBean,在容器上调用getBean(“myBean”)将返回FactoryBean的产品,而调用getBean(“&myBean”)将返回FactoryBean实例本身。

下面试例代码

public class UserFactoryBean implements FactoryBean<User> {
	@Override
	public User getObject() {
		return new User("a", "aName");
	}

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值