1. 什么是复杂对象
复杂对象:指的就是不能直接通过new构造方法创建的对象
比如: Connection、SqlSessionFactory
2.Spring工厂创建复杂对象的3种方式
(1) 实现FactoryBean接口
如果你规定了泛型就不是需要返回Object,而是返回你规定的泛型对象即可。
public class ConnectionFactoryBean implements FactoryBean<Connection> {
@Override
public Connection getObject() throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("");
return conn;
}
@Override
public Class<?> getObjectType() {
return Connection.class;
}
@Override
public boolean isSingleton() {
//return true;
return false;
}
}
applicationContext.xml
<bean id="conn" class="com.daixiang.basic.factorybean.ConnectionFactory"/>
注意 这里的class 是 ConnectionFactory 但是 他返回的不是ConnectionFactory 而是你ConnectionFactory 方法中return 的对象 Connection
如果你想获得ConnectionFactory 这个对象 可以写成
ctx.getBean("&conn")
FactoryBean原理
(2) 实例工厂
(3) 静态工厂