spring技术内幕 阅读笔记
spring各个项目
Spring Framework (Core)
这是我们熟知的Spring项目的核心。Spring Framework (Core)中包含了一系列IoC容器的设计,提供了依赖反转模式的实现同时还集成了AOP功能,另外,在Spring Framework (Core)中,还包含了其他Spring的基本模块
Spring Security (安全认证框架)
是广泛使用的基于Spring的认证和安全工具,就是先前在Spring社区 中久负盛名的Acegi框架,Spring的老用户对这个框架都不陌生——这是一个自发的 由Spring的爱好者发起的安全框架,其目标是为Spring应用提供一个安全服务,比如 用户认证、授权等,可以说,没有这样一个框架,很多Spring应用的开发是很难成为 一个完整应用的,因为框架是构建用户管理的核心和基础。
Spring Batch (批处理)
提供构建批处理应用和自动化操作的框架,这些应用的特点是不需要 与用户交互,重复的操作量大,对于大容量的批量数据处理而言,这些操作往往要求 较高的可靠性。
Spring Quartz (批处理)
配合spring-quartz使用,做定时任务。
Spring基本组成模块
Spring IoC(常用)
包含了最为基本的IoC容器BeanFactory的接口与实现,也就是说,在这 个Spring的核心包中,不仅定义了IoC容器的最基本接口 (BeanFactory),也提供了一 系列这个接口的实现,inXmlBeanFactory就是一个最基本的BeanFactory (IdC容器), 从名字上可以看到,它能輝支持通过XML文件配置的Bean定义信息。除此之外,Spring IoC 容器还提供了一个容器系列,如SimpleJudiBeanFactery、StaticLisUbleBeanFactory等 o 我们知道,单纯一个IoC容器对于应用开发来说是不够的.为了让应用更方便地使用IoC 容器,还需要在IoC容器的外围提供其他的支持,这些支持包括Resource访问资源的 抽象和定位等,所有的这些,都是这个Spring IoC模块的基本内容。另外,在 BeanFactory接口实现中,除了前面介绍的像BeanFactory那样最为基本的容器形态之 外,Spring还设计了IoC容器的髙级形态Applicationcontext应用上下文供用户使用' 这些ApplicationConlext应用上下文,如FileSystemXml ApplicationContext, ClassPathXmlAppHc砒ionContext,对应用来说,是1此容器中更面向框架的使用方式, 同样,为了便于应用开发,像国际化的消息源和应用支持事件这些特性,也都在这个 模块中配合IoC容器来实现,这些功能围绕着IoC基本容器和应用上下文的实现,构成 了整个Spring IoC模块设计的主要内容。
Spring AOP(常用)
这也是Spring的核心模块,围绕着AOP的增强功能,Spring集成了 Aspect!作为AQP的一个特定实现,同时还在JVM动态代理/CGLIB的基础上,实现了 一个A0P框架,作为Spring集成其他模块的工具,比如Transactionproxy Factory Bean 声明式事务处理,就是通过AOP集成到Spring中的,在这个模块中,Spring AOP实现 了一个完整的建立AOP代理对象,实现AOP拦截器,直至实现各种Advice通知的过程. 在对这个模块的分析中可以看到,AOP模块的完整实现是我们熟悉AOP实现技术的一 个不可多得的样本
Spring MVC(常用)
对于大多数企业应用而言,Weh应用已经是一种普遍的软件发布方式, 而在Web应用的设计中,MVC模式已经被广泛使用了。在Java的社区中,也有很多类 似的MVC框架可以选择,而且这些框架往往和Web UI设计整合在一起,对于定位于 提供整体平台解决方案的Spring,这样的整合也是不可映少的。Spring MVC就是这样 一个模块,这个模块以DispatcherServlet为核心,实现了MVC模式,包括怎样与Web 容器环境的集成,Web请求的拦截、分发、处理和McdelAndView数据的返回,以及 如何集成各种UI视图展现和数据表现,如PDF、Excel等,通过这个模块,可以完成 Web的前端设计。
Spring JDBC/Spring ORM
在企业应用中,对以关系数据库为基础的数据的处理是 企业应用的一个重要方面,而对于关系数据库的处理,Java提供了JDBC来进行操作, 但在实际的应用中,单纯使用JDBC的方式还是有些繁琐,所以在JDBC规范的基础上, Spring对JDBC做了一层封装,使通过JDBC完成的对数据库的操作更加简洁。Spring JDBC包提供了JdbcTemplate作为模板类,封装了基本的数据库操作方法,如数据的 査询、更新等,另外,SpringJDBC还提供了RDBMS的操作对象,这些操作对象可以 使应用以更面向对象的方法来使用JDBC,比如可以使用MappingSqlQuery将数据库 数据记录直接映射到对象集合,类似一个极为简单的ORM工具。除了通过Spring JDBC对数据库进行操作外,Spring还提供了许多对ORM工具的封装,这些封装包括 了常用的ORM工具,如Hibernate, iBatis等,这-层封装的作用是让应用更方便地使 用这些ORM工具,而不是替代这些ORM工具,比如可以把对这些工具的使用和 Spring提供的声明式事务处理结合起来。同时,Spring还提供了许多模板对象,如 HibernateTemaplate这样的工具来实现对Hibernate的驱动,这些模板对象往往包装使 用Hibernate的一些通用过程,比如Session的获取和关闭、事务处理的关联等,从而 把一些通用的特性实现抽象到Spring中来,更充分地体现了Spring的平台作用。
Spring事务处理(常用)
Spring事务处理是一个通过Spring AOP实现自身功能增强的典型模 块。在这个模块中,Spring把在企业应用开发中事务处理的主要过程抽象出来,并且 简洁地通过AOP的切面增强实现了声明式事务处理的功能,这个声明式事务处理的实 现,使应用只需要在IoC容器中对事务属性进行配置即可完成,同时,这些事务处理 的基本过程和具体的事务处理器实现是无关的,也就是说,应用可以选择不同的具体 的事务处理机制,如JTA、JDBC、Hibernate等。因为使用了声明式事务处理,这些 具体的事务处理机制被纳入Spring事务处理的统一框架中完成,并完成与具体业务代 码的解耦"在这个模块中,可以看到一个通用的实现声明式事务处理的基本过程,比 如怎样配置事务处理的拦截器,怎样读入事务配置属性,并结合这些事务配置属性对 事务对象进行处理,包括事务的创建、挂起、提交,回滚等基本过程,还可以看到具 体的事务处理器(如DataSourceTransacdonManager,. HibernateTransactionManager, JtaTransactionManager等)是怎样封装不同的事务处理机制(JDBC、Hibernate, JTA 等)的.