欢迎光临散文网 会员登陆 & 注册

Spring系列(七):@FactoryBean注解用法介绍

2022-04-05 16:32 作者:IT技术分享社区  | 我要投稿

今天给大家介绍@FactoryBean注解用法,希望对大家能有所帮助!   

       

1、@FactoryBean注解介绍

FactoryBean是实现了FactoryBean<T>接口的Bean,可以该Bean的ID从BeanFactory中获取的实际上是FactoryBean中getObject()方法返回的实例对象,而并不是直接FactoryBean本身,想要获取FactoryBean对象本身,可以在id前面加一个&符号来获取。

BeanFactory部分代码:

说明:String FACTORY_BEAN_PREFIX = "&" ,&符号表示要获取FactoryBean本身


2、@FactoryBean的源码内容如下:

Spring3.0版本之后,FactoryBean开始支持泛型,即接口声明改为FactoryBean<T>的形式

实现FactoryBean<T>接口有一下三个方法

  • getObject:获取bean对应的实例对象

  • getObjectType:获取factoryBean获取到的实例类型

  • isSingleton:factoryBean创建的实例是否是单实例

3、用法示例

3.1 新建Book.java


3.2 新建BookFactoryBean.java


3.3 FactoryBeanConfig.java

3.4 TestFactoryBean.java


4、@FactoryBean应用场景

  • 单一的对象使用FactoryBean意义不大。

  • 创建对象时需要依赖于需要别的接口来监听数据、根据推送数据过来的接口做一些数据处理。

  • 搭配其他接口协作, 依赖于Spring生命周期, 针对某个时间节点、合适的条件判断,来生成自己需要的对象。

5、典型应用

  • MyBatis3 提供 mybatis-spring项目中的 org.mybatis.spring.SqlSessionFactoryBean:

  • 阿里开源的分布式服务框架 Dubbo 中的Consumer 也使用到了FactoryBean

  • shiro中ShiroFilterFactoryBean

  • druid的JdbcStatManagerFactoryBean


Spring系列(七):@FactoryBean注解用法介绍的评论 (共 条)

分享到微博请遵守国家法律