之前我们通过Spring配置文件创建的都是简单对象,那么什么是简单对象呢?简单对象就是通过new 构造方法 创建的对象,比如:UserService,User,Person等.那么我们就需要知道什么是复杂对象
复杂对象:指的就是不能直接通过new构造⽅法创建的对象
Connection
SqlSessionFactory
总结如下图:
Spring配置⽂件的配置
# 如果Class中指定的类型 是FactoryBean接⼝的实现类,那么通过id值获得的是
这个类所创建的复杂对象 Connection
<bean id="conn" class="com.baizhiedu.factorybean.ConnectionFactoryBean"/>
把ConnectionFactoryBean中依赖的4个字符串信息 ,进⾏配置⽂件的注⼊
好处:解耦合
<bean id="conn"
class="com.baizhiedu.factorybean.ConnectionFactoryBean">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/suns?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
接⼝回调
1. 为什么Spring规定FactoryBean接⼝ 实现 并且 getObject()?
2. ctx.getBean("conn") 获得是复杂对象 Connection ⽽没有 获得
ConnectionFactoryBean(&)
Spring内部运⾏流程
1. 通过conn获得 ConnectionFactoryBean类的对象 ,进⽽通过instanceof 判断
出是FactoryBean接⼝的实现类
2. Spring按照规定 getObject() ---> Connection
3. 返回Connection
Spring中⽤于创建复杂对象的⼀种⽅式,也是Spring原⽣提供的,后续讲解Spring整合 其他框架,⼤量应⽤FactoryBean
<bean id="conn" class="com.baizhiedu.factorybean.StaticConnectionFactory" factory-method="getConnection"/>
1. 避免Spring框架的侵⼊
2. 整合遗留系统
<bean id="connFactory" class="com.baizhiedu.factorybean.ConnectionFactory"></bean>
<bean id="conn" factory-bean="connFactory" factorymethod="getConnection"/>
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。