Spring 容器工厂里面还可以有容器工厂(自定义的工厂)

Spring 容器工厂里面还可以有容器工厂(自定义的工厂)

为什么还需要自定义工厂

自定义工厂的好处是更灵活的创建 bean,比如在创建前后进行一些额外的操作。
方便整合第三方框架

装配自定义工厂两种方式

完全自定义

将自定义的工厂类纳入 spring 容器管理,(推荐)命名为 xxxFactoryBean,如案例的第一行代码
告诉 spring 使用我们自定义的工厂来创建实例
factory-bean 引用上面自定义工厂的id,factory-method 指定工厂中的方法

配置文件

<bean id="daoFactoryBean" class="top.lldwb.spring.ch01.factory.DaoFactory"/>
<bean id="userDao" factory-bean="daoFactoryBean" factory-method="getUserDao"/>

实现 FactoryBean 接口(官方推荐)

实现 Spring 提供的 FactoryBean 接口来创建自定义工厂
当需要使用自定义工厂所产生的 bean 的时候,spring 会调用对应工厂的 getObject 方法返回创建好的对象

配置文件

<bean id="userDaoS" class="top.lldwb.spring.ch01.factory.DaoFactoryBean"/>