
1.开发环境
- IDEA版本: 2022.1.4
- Maven版本:3.8.6
- Spring版本:6.0.2
2.案例分析
2.1 自定义Man类

2.2 自定义Company类

2.3 自定义CompanyTest类

2.4 分析图

3.案例改进
- 此时Company类和Man类之间的耦合度比较高,若希望雇佣其它类取代Man类则需要修改Company类,这种修改违背了开闭原则,为了解决该问题,就可以将雇佣什么类的工作移交出去。
3.1 自定义Staff接口

3.2 修改Man类

3.3 修改Company类

3.4 修改CompanyTest类

3.5 分析图

4.IOC概述
4.1 基本概念
- 此时雇佣什么类的控制权已经由业务代码反转给测试代码来决定,这种思想就是IOC(Inverse of Control),翻译过来就是控制反转,使用IOC不仅可以降低程序的耦合性,还可以管理对象的创建和对象之间的依赖等。
4.2 相关接口
- Sping框架提供IOC容器实现有两种方式:
- BeanFactory接口主要用于Spring内部使用,在加载配置文件时不会创建对象。
- ApplicationContext接口是BeanFactory接口的子接口,主要用于开发人员使用,在加载配置文件时就会创建对象。

- ApplicationContext接口的主要实现类:
- FileSystemXmlApplicationContext类主要用于读取磁盘路径的配置文件并创建容器。
- ClassPathXmlApplicationContext类主要用于读取类路径的配置文件并创建容器。
4.3 案例实现



更多精彩和源码欢迎关注微信公众号《格子衫007》!
来源:https://www.cnblogs.com/gezishan007/p/16960399.html
本站部分图文来源于网络,如有侵权请联系删除。