spring系列:一、spring 概述

spring 概述

介绍

spring framework 是一个java框架,一个开源框架,一个分层的一站式轻量级框架,2003年兴起。
spring framework 项目是整个spring生态的基础,包含了spring最核心的功能,如:ioc,aop,spring mvc等,其他项目都需要依赖spring framework。
这里使用的版本是spring-framework-4.2.4.RELEASE版本,后面统一使用spring来简单表示spring framework。

作用

spring 使JAVA EE开发更加容易。
spring 的作用贯穿整个表现层、业务层、持久层,是一个真正的一站式框架。
spring 没有选择和现有的解决方案竞争,而是致力于将它们融合在一起。

起源

spring的出现就是为了解决EJB(Enterprise JavaBean)的臃肿、低效、脱离现实的问题。

体系

在这里插入图片描述

  • core container
    • core 和 beans 模块提供了spring最基础的功能,IOC(控制反转)和DI(依赖注入)
    • context 模块基于core和beans模块,提供用一种框架风格的方式来访问对象。核心接口是ApplicationContext
    • spel(spring expression language),表达式语言模块,提供了在运行期间查询和操作对象图的强大能力。支持访问和修改属性值,方法调用,支持访问和修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从spring容器获取bean,支持列表、选择和一般的列表聚合等。
    • spring提供了factory模式的经典实现来消除对程序性单例模式的需要,允许你真正地从程序逻辑中分离出依赖关系和配置。
  • data access/integration
    • jdbc模块提供了对jdbc的抽象,消除了烦琐的jdbc编码和数据库厂商特有的错误代码解析
    • orm模块为流行的对象关系映射(Object-Relational Mapping)API提供集成层,包括JPA和Hibernate。使用Spring-orm模块可以将这些O/R映射框架与Spring提供的所有其他功能结合使用,例如声明式事务管理功能。
    • oxm模块提供了一个支持对象/XML映射的抽象层实现,例如JAXB、Castor、JiBX和XStream。
    • jms模块(Java Messaging Service):指Java消息传递服务,包含用于生产和使用消息的功能。自spring4.1以后,提供了与Spring-messaging模块的集成。
    • tx模块(事务模块)支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理。
  • web
    • websocket protocol是html5的一种新协议,它实现了浏览器和服务器的全双工通信。spring 支持 websocket 和 socketJS 的通信。
    • web 模块提供了基本的web功能。
    • servlet模块提供了web应用的mvc实现。
    • portlet模块提供了portlet环境下的mvc实现。
  • aop
    • aop模块提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。
  • aspects
    • spring提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架。
  • instrumentation
    • 提供了类植入(Instrumentation)支持和类加载器的实现,可以在特定的应用服务器中使用。
  • messaging
    • spring4.0以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持。
  • test
    • test模块支持使用junit或testNG对spring组件进行单元测试和集成测试。

优点

  • 方便解耦,简化开发
    spring就是一个大工厂,可以将所有对象创建和依赖的关系维护,交给spring管理。
  • AOP编程的支持
    spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
  • 声明式事务的支持
    只需要通过配置就可以完成对事务的管理,而无需手动编程。
  • 方便程序的测试
    spring对Junit4支持,可以通过注解方便的测试Spring程序。
  • 方便集成各种优秀框架
    spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持。
  • 降低JavaEE API的使用难度 spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。