Spring概述
Spring是为企业Java最流行的应用程序开发框架。数以百万计的世界各地的开发人员使用Spring框架来创建高性能,易于测试的,可重用的代码。
Spring为企业应用的开发提供了一个轻量级的解决方案。该解决方案方案包括:基于依赖注入的核心机制,基于AOP的声明事物管理与多种持久层技术的整合,以及优秀的Web MVC框架等。
Spring为Java EE应用的表现层、业务逻辑层和数据持久层都提供了极好的解决方案,因为Spring提供的不仅仅是一种框架,而且提供了一种企业应用开发的规范。Spring是实际开发的抽象,以提供的“模板设计”大大简化了应用的开发。
Spring官网: https://spring.io
1.核心技术
Spring框架的核心技术是IoC(控制反转)和AOP(面向切面编程)
1.1 IoC
当某个Java实例(调用者)需要另一个Java实例(被调用者)时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例,而在依赖注入的模式下,创建被调用者的工作由Spring容器来完成,然后注入调用者。
1.2 AOP
面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
2.Spring模块
2.1 核心容器(Core Container)
- spring-core: 核心工具类,Spring框架其他模块大部分都依赖于spring-core
- spring-beans: Spring定义的Bean的支持
- spring-context: 运行时spring容器
- spring-context-support: spring容器对第三方包的集成支持
- spring-expression: 使用表达式语言在运行时查询和操作对象
2.2 AOP
- spring-aop: 基于代理的AOP支持
- spring-aspects: 基于AspectJ的AOP支持
2.3 消息(Messaging)
- spring-messaging: 对消息框架和协议的支持
2.4 WEB
- spirng-web: 提供基础的Web集成的功能,在Web项目中提供Spring容器
- spring-webmvc: 提供基于Servlet的Spring MVC
- spring-websocket: 提供WebSocket功能
- Spring-webmvc-portlet: 提供Portlet环境支持
2.5 数据访问
- spring-jdbc: 提供基于JDBC的数据库访问支持
- spring-tx: 提供事务支持
- spring-orm: 提供ORM(对象映射模型)技术的支持
- spring-oxm: 提供OXM(对象/XML映射)技术的支持
- spring-jms: 提供对JMS的支持
3.Spring生态
Spring经过长期的发展,目前可以提供给开发者包括spring-framework在内的更多的其他Spring项目,降低开发难度、提高开发效率。
+ Spring Boot: 使用默认开发配置实现快速开发
+ Spring Cloud: 为分布式系统开发提供工具箱
+ Spring Data: 对主流的关系型和NoSQL数据库提供支持
+ Spring Batch: 简化和优化大量数据的批处理操作
+ Spring Security: 认证和授权保护
+ Spring Social: 提供社交API的集成
+ Spring Mobile: 提供对手机设备的检测功能,为不同的移动设备提供页面支持
+ Spring for Android: 主要提供在Android上消费RESTful的功能
+ Spring Web Service: 提供基于协议有限的SOAP/Web服务
全部Spring Project:
4.技术特点
1) 低侵入式设计,代码污染极低。
2) 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺。
3) Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦。
4) Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用。
5) Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
6) Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。