========
实例工厂
========
既然可以通过FactoryBean创建复杂对象,为什么还需要实例工厂?
- 我们的代码必须实现FactoryBean接口,这实际上一种来自Spring框架侵入
- 在现有的遗留系统中已有这样的类
public class ConnectionFactory {
public Connection getObject() {
...
return conn;
}
}
但它并不是FactoryBean接口的实现类,且存在于以.class文件而非.java文件中
/src/main/java/cn/tedu/injection/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/springdb?useSSL=false",
"root", "123456");
}
catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return conn;
}
}
/src/main/resources/applicationContext.xml:
_________________________________________
| v
^___________________ |_______
| v
^|______________________^ |
__________| _________________________________________________|
| v
| Connection conn = applicationContext.getBean(
| "conn", Connection.class);
|________|
例程:Injection