0. 什么是复杂对象
复杂对象:指的就是不能直接通过new构造方法创建的对象,如:Connection、SqlSessionFactory。
1. FactoryBean接口
见文章:《Spring FactoryBean的实现及简单原理》(点击阅读)
2. 实例工厂
- 避免Spring框架的侵入
- 整合遗留系统
ConnectionFactory.java
public class ConnectionFactory {
public Connection getConnection(){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306","root","123456");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
applicationContext.xml
<!--实例工厂-->
<bean id="connFactory" class="com.daixiang.basic.factorybean.ConnectionFactory"/>
<bean id="conn1" factory-bean="connFactory" factory-method="getConnection"/>
3. 静态工厂
StaticConnectionFactory.java
public class StaticConnectionFactory {
public static Connection getConnection(){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306","root","123456");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
applicationContext.xml
<!--静态工厂-->
<bean id="conn2" class="com.daixiang.basic.factorybean.StaticConnectionFactory" factory-method="getConnection"/>