Spring框架是什么
Spring是为企业Java最流行的应用程序开发框架。数以百万计的世界各地的开发人员使用Spring框架来创建高性能,易于测试的,可重用的代码。
Spring框架是一个开源的Java平台,它最初是由Rod Johnson编写并在2003年6月在Apache2.0许可下首次发布。
Spring是轻量级的,当涉及到大小和透明度。 spring框架的基本版本是大约2MB。
Spring框架的核心功能可以在任何Java应用程序中使用,但也有扩展的Java EE平台上构建Web应用程序。 Spring框架的目标,以使J2EE开发更容易使用,并且通过使基于POJO的编程模型,促进良好的编程习惯。
使用Spring框架的好处:
以下是一些使用Spring框架的极大的好处列表:
-
Spring 使开发人员使用POJO来开发企业级应用程序。仅使用POJO的好处是不需要EJB容器产品,如应用服务器,但必须只使用一个强大的servlet容器,如Tomcat 或某些商业产品的选择。
-
Spring 被组织在一个模块化的方式。虽然包和类的数量是巨大的,你只有担心那些需要的,而其它的就忽略了。
-
Spring不重新发明轮子,而是真正利用了一些像一些ORM框架,日志框架,JEE,Quartz和JDK定时器,其他视图技术的现有技术。
-
编写测试Spring的应用程序很简单,因为环境相关的代码被移动到这个框架中。此外,通过使用JavaBean风格的POJO,它变得更容易使用依赖注入注入测试数据。
-
Spring web框架是一个设计良好的Web MVC框架,它提供了一个很好的替代Web框架,如Struts或其他过度设计或不太流行的Web框架。
-
Spring提供了一个方便的API平移技术特定的异常(通过JDBC,Hibernate,或者JDO抛出,例如)成一致,未经检查的异常。
-
轻量级的IoC容器往往是轻量级的,尤其是相对EJB容器,例如。这有利于开发和有限的内存和CPU资源的计算机上部署应用程序。
-
Spring提供了一致的事务管理接口,可向下扩展到(使用一个单一的数据库,例如)本地事务并扩展到全局事务(使用JTA,例如)。
依赖注入(DI):
Spring最有确定的技术是依赖注入控制反转(DI)。控制反转(IoC)是一个笼统的概念,它可以表现在许多不同的方式和依赖注入仅仅是控制反转的一个具体的例子。
当编写一个复杂的Java应用程序,应用程序类应该尽可能独立其他Java类来增加重复使用这些类,并独立于其他类别的测试它们,而这样做单元测试的可能性。依赖注入有助于粘合这些类在一起,同时保持他们的独立。
什么是依赖注入是什么呢?让我们来看看这两个词分开。这里的依赖性部分转化为两个类之间的关联。例如,A类是依赖B类,现在,让我们来看看第二部分,注入。这一切都意味着,B类将由IOC注入到A类得到。
依赖注入可以将参数传递给构造函数的方式或使用后建设setter方法发生。依赖注入是Spring框架的核心,所以会在一个单独的章节,一个不错的例子解释这个概念。
面向切面编程(AOP):
Spring的一个关键组件是面向切面编程(AOP)框架。跨越多个点的应用程序的功能被称为横切关注点和这些横切关注点是从应用程序的业务逻辑概念上区分开来。有方面的各种常见很好的例子包括日志记录,声明性事务,安全性和高速缓存等。
模块化的OOP关键单元是类,而在AOP中模块化的单元则是切面。DI帮助您从彼此分离的应用程序对象,AOP可以帮助你消除来自他们影响的对象横切关注点。
Spring框架AOP模块提供了面向方面编程实现,允许您定义方法拦截器和切入点,以干净脱钩,实现的功能,应该分开代码。我将在单独的一章讨论Spring AOP的概念。
Spring框架的体系结构
Spring有可能成为所有企业应用程序的一站式服务,然而,Spring是模块化的,使您可以挑选哪些模块是适用的,而不必把在余下的也引入。以下部分给出详细介绍在Spring框架中所有可用的模块。
Spring框架提供约20个模块,可以根据应用程序的要求来使用。
核心容器:
核心容器组成的核心,Beans,上下文和表达式语言模块,其细节如下:
-
核心模块提供了框架的基本组成部分,包括IoC和依赖注入功能。
-
Bean模块提供BeanFactory是工厂模式的经典实现。
-
Context 上下文模块建立在由核心和Bean类模块提供了坚实的基础,它是访问定义和配置的任何对象的媒介。在ApplicationContext接口是上下文模块的焦点。.
-
表达式语言模块提供了在运行时查询和操作对象图的强大的表达式语言。
数据访问/集成:
数据访问/集成层包括JDBC,ORM,OXM,JMS和事务处理模块,其细节如下:
-
JDBC模块提供了不再需要冗长的JDBC编码相关了JDBC的抽象层。
-
ORM模块提供的集成层。流行的对象关系映射API,包括JPA,JDO,Hibernate和iBatis。
-
OXM模块提供了一个支持对象/ XML映射实现对JAXB,Castor,使用XMLBeans,JiBX和XStream 的抽象层。
-
Java消息服务JMS模块包含的功能为生产和消费的信息。
-
事务模块支持编程和声明式事务管理实现特殊接口类,并为所有的POJO。
Web:
在Web层包括网络,Web-Servlet,Web-Struts和网络的Portlet 组件,其细节如下:
-
Web模块提供了基本的Web开发的集成特性,例如多方文件上传功能和使用的servlet监听器的IoC容器初始化和针对Web的应用程序上下文。
-
Web-Servlet 模块包含Spring的模型 - 视图 - 控制器(MVC)实现Web应用程序。
-
Web-Struts 模块包含支持类内的Spring应用程序集成了经典的Struts Web层。
-
Web-Portlet 模块提供了MVC实现在portlet环境中使用和镜子Web的Servlet的模块的功能。
其他:
还有像AOP,切面,规范,网络和测试模块,其详细情况如下其他一些重要的模块:
-
AOP模块提供了面向方面编程实现,允许您定义方法拦截器和切入点,以干净解耦,实现的功能,应该分开的代码。
-
Aspects 模块提供与AspectJ的集成这又是一个功能强大且成熟的面向方面编程(AOP)框架。
-
Instrumentation 模块提供了一定的应用服务器中使用类工具的支持和类加载器实现。
-
测试模块支持Spring 组件使用 JUnit 或 TestNG 框架的测试。