Spring IOC
IOC 底层原理
使用技术
- xml配置文件
- dom4j 解决 xml
- 工厂设计模式
- 反射
实现原理
public class User {
public void add() {};
}
// 调用方法
User user = new User();
user.add()
// 缺点耦合度太高。当类名、方法名发生改变需要修改多处
------------------------------------------------------------
// 使用工厂模式解耦合
public class UserService {
public void add() {}
}
public class Factory {
// 提供返回UserService对象的方法
public static UserService getService() {
return new UserService();
}
}
public class UserServlet {
UserService s = Factory.getService();
s.add();
}
// 问题:servlet 和 工厂出现了新的耦合
------------------------------------------------------------
// IOC 原理
public class UserService {
public void add() {}
}
// 1. 创建配置文件
<bean id = "userService" class = "xx.xxx.UserService"/>
// 2. 创建工厂类 解析xml + 反射
public class UserFactory {
// 返回 UserService 对象的方法
public static UserService getService() {
// 解析xml文件
String classValue = ""; // 使用dom4j得到
// 反射创建类对象
Class clazz = Class.forName(classValue);
// 创建类对象
Userservice service = clazz.newInstance();
return service;
}
}
// 调用方法得到userService
public class UserServlet {
UserService userService = UserFactoryu.getService();
}
示例
- 导入 jar 包(最基本的包)
- commons-logging
- log4j
- spring-beans
- spring-core
- spring-context
- spring-expression
- 创建类、方法
- 配置 xml 文件
- 配置文件位置和名字不固定
建议放在 src 下,官方建议名称applicationContext.xml
- 引入约束
- 配置对象创建