
factorybean创建spring bean的类型区分与实现
在spring中,factorybean可以创建和初始化bean,与直接new实例的bean不同。
区分类型:
使用factorybean创建的bean有两种类型:
- 代理类型:factorybean本身作为代理,通过反射动态创建和管理bean实例。
- 单例类型:factorybean创建bean实例并将其缓存为单例,直接返回引用。
实现类型区分:
要实现factorybean,可以实现两个接口:
- factorybean : 针对代理类型bean,其中t是bean的类型。
- factorybeanaware:针对单例类型bean,使其可以访问创建它们的factorybean。
实现代码示例:
代理类型:
public class myfactorybean implements factorybean<a> {
@override
public a getobject() throws exception {
return new b();
}
@override
public class<?> getobjecttype() {
return a.class;
}
@override
public boolean issingleton() {
return false;
}
}
登录后复制
单例类型:
public class MyFactoryBean implements FactoryBean<A>, FactoryBeanAware {
private A instance;
@Override
public void setFactoryBean(FactoryBean<?> factoryBean) {
instance = factoryBean.getObject();
}
@Override
public A getObject() throws Exception {
return instance;
}
@Override
public Class<?> getObjectType() {
return A.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
登录后复制
以上就是FactoryBean创建Spring Bean的类型区分:代理类型和单例类型有什么?的详细内容,更多请关注IDCBABY其它相关文章!
