Spring工厂创建复杂对象的3种方式
什么是复杂对象?
不能直接通过 new构造方法创建的对象。
FactoryBean
1、实现FactoryBean接口


2、进行Spring配置文件配置
<bean id="conn" class="com.example.exp1.factoryBean.ConnectionFactoryBean" />
如果 Class中指定的类型是 FactoryBean的实现类,那么通过 id值获得的是这个类所创建的复杂对象,比如上面这句话返回的就是 Connection对象。
细节
- 如果我想得到的是
FactoryBean类型的对象,使用ctx.getBean("&conn"),即添加一个& isSingleton返回true只创建1个对象,false每次创建新的对象
什么时候选择什么?
Connection对象应该是公用还是新的?是新的(不共用)。为什么?
SqlSessionFactory共用
实例工厂
为什么要用?
1、避免Spring框架的侵入。2、整合遗留系统。
为什么叫实例工厂?
因为必须要先创建实例。
开发步骤:
1、在配置文件中,调用方法。
<bean id="connFactory" class="com.example.factorybean.ConnectionFactory"></bean>
<bean id="conn" factory-bean="connFactory" factory-method="getConnection" />
静态工厂
静态方法可以直接调用,不需要先创建实例对象。
<bean id="conn" class="com.example.factroybean.StaticConnectionFactory" factory-method="getConnection" />