CH01 POJO编程模型,轻量级容器
POJO编程模型
EJB缺陷
- 编程麻烦
- 无法再J2EE平台外运行组件
- 编程耦合
- 难测试
- 部署易出错
POJO编程模型优点
- POJO 就是简单Java对象,不实现任何特殊接口。
- 快而简单
- 可移植性强
- 测试简单
轻量级容器和控制反转
轻量级容器
- 一个环境,所有的组件都被创建和装配,并且提供了所需的中间件服务,这样一个环境被称为容器.
- 容器可以提供许多功能:
- 生命周期管理
- 依赖解析
- 组件查找
- 应用程序配置
- 还有其他服务:
- 事务管理
- 安全性
- 线程管理
- 对象和资源池
- 对组件的远程访问
- 通过JMX之类的API管理组件
- 容器扩展和定制
- 一个轻量级容器包括所有上述功能,但并不需要为了依赖这些API而编写应用程序代码.
- 轻量级容器没有侵入特性,启动非常快,并且不需要将其部署到一个功能齐全的JavaEE应用程序服务器上就能提供上述服务.
- SpringApplicationFramework是最著名的轻量级容器之一.
控制反转
- 容器及其管理的组件所提供的最重要的好处是可插拔的体系结构.容器的工作是创建这些组件及其所依赖的服务,并将这些组件装配在一起.
- 组件类中不需要自己实例化所依赖组件,而是由容器实例将依赖组件注入组件.因此对依赖项的控制由组件转到容器,这就是控制反转(IoC).
- IoC是容器都需要提供的基本功能之一,主要有两种形式:依赖查找(dependence lookup)和依赖注入(dependence injection).
- 在这里放一个解释控制反转和依赖注入的区别的博客:http://blog.csdn.net/doris_crazy/article/details/18353197
依赖注入
简介
- 依赖注入发基本原则是应用程序对象不应该负责查找它们所依赖的资源或者协作者,而是由容器处理对象的创建和依赖注入,从而导致资源查找的外部化,从应用程序转移到容器.
- 依赖注入的好处:①可从应用程序代码中完全删除查找逻辑代码,依赖项可以以一种可插拔的方式注入目标组件中.这样组件就不需要知道依赖项的位置或类.②对容器的API也没有任何依赖.③完全不需要事先任何特殊的接口.
- 依赖注入有多种方法,如构造函数注入,setter方法注入等,或者混合使用.
setter注入
- 当一个对象被容器实例化之后就会马上调用Setter方法.Setter注入在组件的创建或者初始化阶段发生,并且在处理业务方法调用之前完成.
构造函数注入
- 通过构造函数注入,Bean可以利用构造函数参数来表达依赖项,可以在组件创建期间注入依赖项
- 构造函数注入最大的有点是可以保证容器中每一个被管理的组件都处于一致状态,并且创建之后可以马上使用.
- 最大的缺点是,组件创建完成后就无法再对组件进行重新配置,除非为相关属性提供一个Setter作为构造函数参数.