Administrator
发布于 2025-12-19 / 2 阅读
0

Spring创建复杂对象

Spring工厂创建复杂对象的3种方式

什么是复杂对象?

不能直接通过 new构造方法创建的对象。

FactoryBean

1、实现FactoryBean接口

6943a9e2ab6d3.png

6943aa443fa6e.png

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" />