Spring工厂创建复杂对象(三种方式)
1.什么是复杂对象
简单对象:可以直接通过new方法创建的对象;
UserService
UserDAO
Customer
Person
......
复杂对象:不能通过new构造方法创建的对象。
Connection
SqlSessionFactory
......
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4H23jIj-1631513788547)(C:\Users\dancerHoan\AppData\Roaming\Typora\typora-user-images\image-20210911212854772.png)]
2.FactoryBean接口----方法一
实现步骤:
-
实现
FactoryBean
接口:实现方法:
getObject()
,getObjectType()
,isSingleton()
getObject()
:用于书写创建复杂对象时的代码。getObjectType()
:返回创建的复杂对象的类型。isSingleton
:用于决定是否单例。
public class ConnectionFactoryBean implements FactoryBean<Connection> {
// 用于书写创建复杂对象时的代码
@Override
public Connection getObject() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/spring", "root", "1234");
return conn;
}
// 返回创建的复杂对象的类型
@Override
public Class<Connection> getObjectType() {
return Connection.class;
}
// 是否单例
@Override
public boolean isSingleton() {
return false; // 每一次都创建新的复杂对象
// return true; // 只创建一次这种类型的复杂对象
}
}
return true; // 只创建一次这种类型的复杂对象
}
}