概述
Spring 是最受欢迎的企业级 Java 应用程序开发框架。主要用来在java EE平台上开发web应用。
好处
spring可以使开发人员使用pojos开发企业级的应用程序。
spring是有组织的。有大量的包和类,你只需要使用你需要的即可。
spring不会让你重复工作,并且真正利用了一些现有的技术,比如:几个ORM框架,日志框架,JEE,Quertz和JDK计时器,其他视图技术。
spring让测试变得更加容易,因为environment-dependent代码被放进这个框架中,使用javaBean-style POJOs,使依赖注入注入测试数据时变得更加容易。
spring的web框架是最受欢迎的。
spring提供一系列异常API,把特定技术的异常翻译成一致的(如JDBC,hibernate ,或JDO抛出的异常)
spring是轻量级的。有利于在内存和CPU资源有限的计算机上开发和部署。
spring提供了事物管理界面,可以是本地事物(单一的数据库)或者是全局事物(如JTA,多个数据库)
控制反转(IOC)
spring最认同的技术是控制反转的依赖注入(DI),控制反转(IOC)是一个通用的概念,依赖注入仅仅是控制反转的一个具体的例子。此为spring的核心。
例如:A依赖B,而将B通过控制反转(IOC)注入到A中。
面向方面的程序设计(AOP)
spring框架的一个关键组件是面向方面的程序设计(AOP)框架。一个程序中跨越多个点的功能被称为横切关注点。常见的关于方面的例子,比如日志记录。声明性事物,安全性和缓存等等。此为spring的核心。
并且提高了面向方面的程序设计实现,允许你定义拦截器方法和切入点,可以实现将应该被分开的代码干净的分离开来。
结构体系
spring有可能成为所有企业程序的一站式服务点,spring是模块化的,允许你挑选和选择适用你的模块。、
核心容器
核心容器有核心、Bean,上下文和表达式语言模块组成;
核心模块提供了框架的基本组成部分,包括IOC和AOP
Bean模块提供BeanFactory,它是一个工厂模式的复杂实现。
上下文模块建立在由核心和Bean模块提供的基础上,它是访问定义和配置的媒介。applicationContext接口是上下文模块的重点。
表达式语言模块在运行时提供了查询和操作一个对象图的强大的表达式语言。
数据访问/集成
数据访问/集成包括JDBC,ORM,OXM,JMS和事物处理模块,
JDBC模块提供了删除冗余的JDBC相关编码和JDBC抽象层。
ORM模块为流行的对象关系映射API,包括JPA,JDO,hibernate和iBatis。提供了集成层。
OXM模块提供了抽象层,支持JAXB,CASTOR,XMLBeans,JiBX和XStream的对象映射实现。
java消息服务JMS模块包含生产和消费的信息的功能。
事物模块为实现特殊接口的类及所有的POJO支持编程式和声明式事物管理。
WEB
web层由web、web-mvc,web-socket和web-portlet组成
-
Web 模块提供了基本的面向 web 的集成功能,例如多个文件上传的功能和使用 servlet 监听器和面向 web 应用程序的上下文来初始化 IoC 容器。
-
Web-MVC 模块包含 Spring 的模型-视图-控制器(MVC),实现了 web 应用程序。
-
Web-Socket 模块为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。
- Web-Portlet 模块提供了在 portlet 环境中实现 MVC,并且反映了 Web-Servlet 模块的功能。
还有其他一些重要的模块,像 AOP,Aspects,Instrumentation,Web 和测试模块,它们的细节如下:
-
AOP 模块提供了面向方面的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,它实现了应该分离的功能。
-
Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。
-
Instrumentation 模块在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。
-
Messaging 模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息。
- 测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。