概念
// 是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。
// 其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),
// 还有一种方式叫“依赖查找”(Dependency Lookup)。
// 通过控制反转,对象在被创建的时候,
// 由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。
// 也可以说,依赖被注入到对象中。
//控制反转 把对象的创建和把对象之间的调用过程 交给 spring进行管理
// 目的: 为了耦合度降低
IOC 底层实现原理
// 1、xml 解析 2、工厂模式 3、反射
//原始方法 一个类调用另一个类的方法 必须通过 new 对象的方式来实现 // 这种 耦合度太高了 比如 某个类 发生了变化 所有需要使用的类 都需要改变
IOC的演变
// 工厂模式
// 在这两个类中间 再创建一个 工厂类 某个类需要的时候另一个类时 就去工厂类里取
// 但是这样也没有把 类与类之间的耦合度 降到最低
// IOC 这种原理 就可以将耦合度 降到最低 // 1、xml 解析 2、工厂模式 3、反射 这三个东西 配合 可以实现 // IOC过程 // 第一步创建 xml 配置文件 // //
IOC 接口(BeanFactory)
// IOC 思想 基于 ”IOC容器“ 完成 IOC容器底层就是对象工厂 // spring 提供了 IOC容器 实现的两种方式 : // (两个接口) BeanFactory和ApplicationContext // 1、BeanFactory:IOC容器 基本实现 , 是Spring内部接口, 一般不使用这个接口 // **特点**:加载配置文件时 不会创建对象 在使用的时候 才会去创建 // 2、ApplicationContext :是 BeanFactory接口的 子接口 提供了更多的功能 // 一般使用这个 // **特点**: 在加载配置文件时 就会 创建 配置文件中的对象 // web 开发 把一些 慢的 耗时耗资源的 在项目 启动的时候 都加载进来 比较好
IOC 操作 Bean管理 (基于xml)
// 什么是 Bean 管理 ? // 0、指的是 两种操作方式 基于 xml 和基于注解 实现 // 1、Spring 创建对象 // 2、Spring 注入属性 // 基于 xml 方式创建对象
//
//
// 1) 在spring 配置文件中 使用 bean标签 添加对应的属性 可实现 对象创建
// 2)在bean标签 有很多属性
// id属性 : 给对象起个别名 根据这个名字 可以得到这个对象
// class 属性 : 对象的 包路径
// name 属性: 目前没人用了 跟 id 一个性质
// 3) 创建对象的时候 默认也执行 无参数的构造方法
// 特点 如果 声明了 有参构造 需要手动声明 一个无参构造
// 基于 xml 方式注入属性 // 1) ID: 依赖注入 , 就是注入属性 是IOC里的一种实现 // 原始 设置属性方法 // 第一种 new 对象 set 方法 来注入属性 // 第二种 通过有参构造 来注入属性 // 基于 xml 方式注入属性
在类文件中声明 set 方法
然后 通过 spring配置文件中 配置 注入属性
在 类文中 声明 属性和有参构造方法
然后 通过 spring配置文件中 配置 注入属性
//练习 使用xml 注入 其他类型 属性 // 1、字面量 : 设置固定值 叫字面量
设置 null 使用 null 标签
设置 属性值 里包含 特殊符号
// 第11节 学习
// 注入属性 外部 bean
//1、创建两个类 Service 类 和 dao类
//2、在Service类中 调用 dao类
//传统方式 调用
//创建 UserDao对象
// UserDao userDao=new UserDaoImpl();
// userDao.update();
//spring 方式调用
//在Service类中 创建 一个UserDao 属性 声明 set方法
//在配置文件中 创建 对象 并把 UserDao对象 注入到 service 对象中
测试 :