最近在看Spring in Action,在这里和大家分享一些读书笔记。可能大部分都是照本宣科,希望大家能够指教和讨论。
Spring框架简介
Spring是一个开源的框架。简单的说,Spring是一个轻量的控制反转(inversion of control)和面向方向的(aspect-oriented)容器框架。
Spring框架由7个模块组成,如下图所示:
Spring所有的模块都是建立在Core Container模块上的。Core Container定义了bean是怎样创建、配置、管理的。
The Core Container 模块:Spring的Core Container提供了基础的功能。在这个模块中,你能够找到Spring的BeanFactory,BeanFactory是任何的基于Spring的应用程序的核心。BeanFactory是Factory模式的实现,应用了IoC(Inversion of Control)来将应用程序的配置和依赖说明从应用程序代码中分离出来。
Application context模块:core container模块使Spring成为一个容器,Application context模块使Spring成为一个框架。这个模块扩展了BeanFactory的概念,添加了对国际化(I18N, internationalization)信息、应用程序生命周期、验证等的支持。这个模块还提供例如email、JNDI访问、EJB集成等企业服务。
AOP模块:这个模块提供了对面向方向编程(aspect-oriented programming)的支持。
JDBC abstraction and the DAO模块:使用JDBC会用到一些“样板代码”,如获取connection、创建statement,处理result set,关闭connection等。Spring的JDBC和DAO模块将这些代码抽取出来,这样能够是代码更加干净、简单,并且防止了关闭数据源失败产生的问题。这个模块还在几个不同的数据库服务器给出的错误信息的基础上建立了一个有意义的异常层,不需要用户再去解释那些含义模糊的不同的服务器私有的错误信息。这个模块还使用Spring的AOP模块来提供事务管理服务。
ORM模块:Spring没有实现自己的ORM,而是提供了到几个流行的ORM框架的接口,包括Hibernate,JDO和iBATIS SQL Maps。Spring的事务管理象支持JDBC一样支持这些ORM框架。
Web context模块:web context模块是建立再applcation context模块上的,提供了适合语基于web的应用程序的context。这个模块还支持一些面向web的任务,同时还集成了对Jakarta Struts的支持。
MVC框架:Spring提供了一个完整的建立web应用程序的MVC框架。Spring能够和其他的MVC框架例如Struts集成。 Spring的MVC框架利用IoC提供了控制逻辑和业务逻辑的分离。而且,Spring的MVC框架能够利用Spring的其他服务,例如I18N信息和验证。