Spring 是由 Rod Johnson 组织和开发的一个分层的 Java SE/EE fu stack (一站式)轻量级开源框架,它以 loC ( Inversion of Control ,控制反转)和 AOP ( Aspect Oriented Programming , 面向切面编程)为内核,使用基本的 JavaBean 来完成之前只可能由 EJB(Enterprise Java Beans,Java 企业 Bean) 完成的工做,取代了 EJB 的臃肿低效的开发模式web
Spring 具备简单、可测试和松辑合等特色数据库
Spring 是一种非侵入式 non-invasive )框架,它可使应用程序代码对框架的依赖最小化express
Spring 就是一个大工厂,能够将全部对象的建立和依赖关系的维护工做都交给 Spring 容器管理,大大地下降了组件之间的搞合性编程
Spring 提供了对 AOP 的支持,它容许将一些通用任务,如安全 事务 曰志等进行集中式处理,从而提升了程序的复用性数组
只须要经过配置就能够完成对事务的管理,而无须手动编程缓存
Spring 提供了对 Junit4 的支持,能够经过注解方便地测试 Spring 程序安全
Spring 不排斥各类优秀的开源框架,其内部提供了对各类优秀框架(如 Struts Hibernate、MyBatis Quartz 等)的直接支持服务器
Spring Java EE 开发中很是难用的一些 API (如 JDBC JavaMail 等),都提供了封装,使这些 API 应用难度大大websocket
Spring体系结构以下图:mvc
Spring的核心容器是其余模块创建的基础,有Spring-core、Spring-beans、Spring-context、Spring-context-support和Spring-expression(String表达式语言)等模块组成。
提供了框架的基本组成部分,包括控制反转(Inversion of Control,IOC)和依赖注入(Dependency Injection,DI)功能。
提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean。
创建在Core和Beans模块的基础之上,提供一个框架式的对象访问方式,是访问定义和配置的任何对象的媒介。ApplicationContext接口是Context模块的焦点。
支持整合第三方库到Spring应用程序上下文,特别是用于高速缓存(EhCache、JCache)和任务调度(CommonJ、Quartz)的支持。
提供了强大的表达式语言去支持运行时查询和操做对象图。这是对JSP2.1规范中规定的统一表达式语言(Unified EL)的扩展。该语言支持设置和获取属性值、属性分配、方法调用、访问数组、集合和索引器的内容、逻辑和算术运算、变量命名以及从Spring的IOC容器中以名称检索对象。它还支持列表投影、选择以及经常使用的列表聚合。
提供了一个符合AOP要求的面向切面的编程实现,容许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。
提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架
提供了类植入(Instrumentation)支持和类加载器的实现,能够在特定的应用服务器中使用。
支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。
Spring4.0之后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持。
数据访问/集成层由JDBC、ORM、OXM、JMS和事务模块组成。
提供了一个JDBC的抽象层,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析。
为流行的对象关系映射(Object-Relational Mapping)API提供集成层,包括JPA和Hibernate。使用Spring-orm模块能够将这些O/R映射框架与Spring提供的全部其余功能结合使用,例如声明式事务管理功能。
提供了一个支持对象/XML映射的抽象层实现,例如JAXB、Castor、JiBX和XStream。
指Java消息传递服务,包含用于生产和使用消息的功能。自Spring4.1之后,提供了与Spring-messaging模块的集成。
支持用于实现特殊接口和全部POJO(普通Java对象)类的编程和声明式事务管理。
Web层由Spring-web、Spring-webmvc、Spring-websocket和Portlet模块组成。
提供了基本的Web开发集成功能,例如多文件上传功能、使用Servlet监听器初始化一个IOC容器以及Web应用上下文。
也称为Web-Servlet模块,包含用于web应用程序的Spring MVC和REST Web Services实现。
Spring4.0之后新增的模块,它提供了WebSocket和SocketJS的实现。
相似于Servlet模块的功能,提供了Portlet环境下的MVC实现。