Spring学习笔记(二)----Spring IOC

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();
}

示例

  1. 导入 jar 包(最基本的包)
    • commons-logging
    • log4j
    • spring-beans
    • spring-core
    • spring-context
    • spring-expression
  2. 创建类、方法
  3. 配置 xml 文件
    • 配置文件位置和名字不固定

    建议放在 src 下,官方建议名称applicationContext.xml

    • 引入约束
    • 配置对象创建
原文地址:https://www.cnblogs.com/qq188380780/p/11443830.html