Expert one on one J2EE development without EJB 摘要(4)
2008-10-23 16:36
447 查看
轻量级容器与控制反转
管理业务对象,通常都是容器的活。
容器去负责装配运行期间的应用对象,而无需在应用代码中查找定位。
所谓容器,是指应用代码的运行框架。应用对象在容器里运行,所谓的被容器管理。web容器用户管理servlet及其相关依赖对象。
任何容器都应该提供下列服务:
声明周期管理:容器用于控制应用对象运行的生存周期--最起码,容器必须将创建新对象的逻辑从使用者那里抽象出来。更精密的生命周期管理可能包括很多的回调机制,在需要激活对象,或者容器本身即将析构时,可以通过这些回调机制通知被管理的对象。
查找服务:容器提供途径,用户获得受管对象的引用
配置管理
依赖决议
ejb容器并不管理ejb组件之间的关系,仅仅提供了jndi定位服务。
容器,尽管java接口提供了很好的契约-实现分离,但还必须有某种途径帮我们找到一个接口的实现。
通过ioc去消除所有的查找代码,让容器自动决定对象间的依赖关系。
ioc有两种实现方式:依赖查找和依赖注入。
依赖注入:让容器全权负责依赖查询,受管对象只需暴露javabean的setter方法或者带参数的构造,是容器可以在初始化时组装对象的依赖关系。由于这种方式不依赖于特定的容器api或接口,称之为“基于语言的ioc”
一个好的ioc组件根本就不需要自己动手查找资源和依赖对象--ioc容器环境中也会提供这样的查找能力。
Spring也定义了回调方法(可选),用于实现基于回调的、依赖查询式的Ioc。以引入依赖Spring API为代价,受管对象可以获取一些回调函数,并可以利用这些回调函数查找其他对象、执行额外的初始化操作、或者在容器关闭时释放资源。
确保每个业务对象有自己明确的责任,通过对象之间的协议将责任区分明确。轻量级容器管理细粒度的对象协作,如果你编写了一个大包大揽的上帝对象,实际上是浪费这种管理能力。
优先考虑使用策略设计模式,而不是具体继承。即优先考虑委派而非继承。
你可以在应用服务器之外做一些集成测试。由于轻量级容器的启动几乎没有任何开销,因此你完全可以在Junit测试用例中实例化一个容器,并用它来配置应用对象。
spring是一个完整的应用框架
spring提供了很多即拿即用的bean工厂实现。
应用上下文是对bean工厂的扩展:它在bean工厂的基础上增加了对信息源和资源加载的支持,并提供了接入现有系统的能力。
Spring AOP的主要用途是为pojo提供声明性的企业级服务。
自动代理。spring在AOP框架之上提供了更高级别的抽象。
spring定义了一组通用的数据访问异常类型,在创建通用的DAO接口时可以用这些异常类型抛出有意义的异常信息,不依赖底层持久机制。
在web.xml中定义一个监听器(ContextLoaderListener),用于加载应用上下文(root application context)。这个监听器的定义如下:
初始化完成之后,整个web应用都可以从ServletContext的一个属性中取得根应用的上下文,就像取得其他对象一样。任何能够访问ServletContext的web资源都可以访问应用上下文对象:
相关文章推荐
- Expert one on one J2EE development without EJB 摘要(2)
- Expert one on one J2EE development without EJB 摘要(3)
- Expert one on one J2EE development without EJB 摘要(6)
- Expert one on one J2EE development without EJB 摘要(7)
- Expert one on one J2EE development without EJB 摘要(1)
- Expert one on one J2EE development without EJB 摘要(8)
- 《Expert One-on-One J2EE Development without EJB》读后感
- Expert one-on-one J2EE Development without EJB
- Expert One-on-One J2EE Development without EJB
- [转载] Review of J2EE Development without Ejb
- 强力推荐重读J2EE development without EJB
- Expert-One-on-One-J2EE笔记
- Java程序员的推荐阅读书籍之八《Expert One-on-One J2EE Design and Development》
- j2ee development without EJB 笔记
- 《Experts one-on-one J2EE design and development》读书笔记2 是否应该采用分布式架构
- 《Expert one-on-one J2EE design and development》学习笔记1——JavaEE常用架构设计
- J2EE Development without EJB
- 《expert one to one:j2ee design and development》随笔
- 《Experts one-on-one J2EE design and development》读书笔记3 J2EE设计中的新的选择
- 推荐所有的.NET开发人员阅读《J2EE Development without EJB》