目录
-
面向对象回顾和案例
-
案例
- 报表功能:
- 报表服务器,检索数据,并生成图表。
- 报表生成器类,生成不同格式的报表文件,例如PDF格式、Html格式
- 实现一:以面向对象的方式实现Demo。
- 实现二:分离接口和实现。
- 优化目标:消除ReportService到ReportGenerator实现类之间的依赖关系
- 实现三:采用容器:
- 增加容器类:Container。
- 所有组件由Container类管理。
- 实现四:使用服务定位器
- 服务定位器:ServiceLocator类:
- 封装查找逻辑
- 对外公开查找组件(Generator)的方法
- 服务定位器:ServiceLocator类:
- 报表功能:
-
-
IoC和DI
-
IoC和DI的概念
- IoC(Inversion of Control,控制反转):
- 设计原则,解耦组件之间的依赖关系
- DI(Dependency Injection,依赖注入):
- 具体的设计模式,体现了IoC的设计原则。
- 因为DI是IoC最典型的实现,所以术语IoC与DI经常被混用
- 应用IoC:
- 好的获取资源的解决方案
- 由容器主动将资源推送到它所管理的组件里,组件要有接受资源的方式
- 查找的被动形式
- 好莱坞原则
- IoC(Inversion of Control,控制反转):
-
DI的实现
- 实现五:
- 不需要服务定位器:
- 组件(ReportService)增加接受资源的方法(setter)
- 由容器将组件(ReportGenerator)注入到另一个组件(ReportService)
- 优点:完全面向接口
- 不需要服务定位器:
- 不同类型的依赖注入(D):
- 三种主要类型:
- 接口注入
- setter注入
- 构造器注入
- 流行程度最广:setter注入
- 有可能忘记注入,会抛出空指针
- 代码安全有可能存在问题,依赖会被修改
- 构造器注入:
- 可避免setter注入发一些缺点
- 没有含义明确的方法名,对参数位置和数量由要求
- 三种主要类型:
- 实现五:
-
-
Spring框架介绍
-
一些背景、发展介绍
-
-
Spring框架实现IoC
-
Spring示例:
- Spring提供了IoC容器
- Beans均由SpringIoC容器来管理和组装
-
Spring示例编码步骤:
- 导入Spring相关Jar文件
- 配置元数据
- Bean是一个由SpringIoC容器进行实例化、装配和管理的对象。
- Beans以及他们之间的依赖关系是通过容器使用配置元数据反映出来
- 配置元数据:
- 基于Xml的配置
- 基于注解的配置
- 基于Java的配置
-