“什么是 FactoryBean”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“1”的新页面) |
Jihongchang(讨论 | 贡献) |
||
(未显示同一用户的7个中间版本) | |||
第1行: | 第1行: | ||
− | + | FactoryBean 是 Spring 所提供的一种较灵活的创建 Bean 的方式, | |
+ | |||
+ | 可以通过实现 FactoryBean 接口中的 getObject() 方法来返回一个对象,这个对象就是最终的 Bean 对象。 | ||
+ | |||
+ | === FactoryBean 接口中的方法 === | ||
+ | Object getObject():返回的是 Bean 对象 | ||
+ | |||
+ | boolean isSingleton():返回是否是单例 Bean 对象 | ||
+ | |||
+ | Class getObjectType():返回的是 Bean 对象的类型<syntaxhighlight lang="java"> | ||
+ | @Component("zhangsan") | ||
+ | public class ZhangsanFactoryBean implements FactoryBean { | ||
+ | |||
+ | @Override | ||
+ | // Bean 对象 | ||
+ | public Object getObject() throws Exception { | ||
+ | return new User(); | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | // Bean 对象的类型 | ||
+ | public Class<?> getObjectType() { | ||
+ | return User.class; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | // 所定义的 Bean 是单例还是原型 | ||
+ | public boolean isSingleton() { | ||
+ | return true; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight>'''FactoryBean 的特殊点''': | ||
+ | |||
+ | 上述代码,实际上对应了两个 Bean 对象: | ||
+ | |||
+ | 1、beanName 为“zhangsan”,bean 对象为 getObject 方法所返回的 User 对象。 | ||
+ | |||
+ | 2、beanName 为 “&zhangsan”,bean 对象为 ZhangsanFactoryBean 类的实例对象。 | ||
+ | |||
+ | FactoryBean 对象本身也是一个 Bean,同时它相当于一个小型工厂,可以生产出另外的 Bean。 | ||
+ | |||
+ | BeanFactory 是一个 Spring 容器,是一个大型工作,它可以生产出各种各样的 Bean。 | ||
+ | |||
+ | FactoryBean 机制被广泛应用在 Spring 内部和 Spring 与第三方框架或组件的整合过程中。 |
2024年7月21日 (日) 04:29的最新版本
FactoryBean 是 Spring 所提供的一种较灵活的创建 Bean 的方式,
可以通过实现 FactoryBean 接口中的 getObject() 方法来返回一个对象,这个对象就是最终的 Bean 对象。
FactoryBean 接口中的方法
Object getObject():返回的是 Bean 对象
boolean isSingleton():返回是否是单例 Bean 对象
Class getObjectType():返回的是 Bean 对象的类型
@Component("zhangsan")
public class ZhangsanFactoryBean implements FactoryBean {
@Override
// Bean 对象
public Object getObject() throws Exception {
return new User();
}
@Override
// Bean 对象的类型
public Class<?> getObjectType() {
return User.class;
}
@Override
// 所定义的 Bean 是单例还是原型
public boolean isSingleton() {
return true;
}
}
FactoryBean 的特殊点:
上述代码,实际上对应了两个 Bean 对象:
1、beanName 为“zhangsan”,bean 对象为 getObject 方法所返回的 User 对象。
2、beanName 为 “&zhangsan”,bean 对象为 ZhangsanFactoryBean 类的实例对象。
FactoryBean 对象本身也是一个 Bean,同时它相当于一个小型工厂,可以生产出另外的 Bean。
BeanFactory 是一个 Spring 容器,是一个大型工作,它可以生产出各种各样的 Bean。
FactoryBean 机制被广泛应用在 Spring 内部和 Spring 与第三方框架或组件的整合过程中。