Spring框架(1) —— 概述

概述

  • Spring是分层的企业级full-stack轻量级开源框架,以IoCAOP为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,并整合了开源世界中众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。

控制反转 IoC(Inversion of Control )

  • 控制反转 就是对象之间的依赖关系由容器来创建,对象之间的关系本来是由我们开发者自己创建和维护的,在我们使用Spring框架后,对象之间的关系由容器来创建和维护,将开发者做的事让容器做,这就是控制反转。BeanFactory接口是Spring Ioc容器的核心接口。
  • 换句话说,就是指new实例工作不再由程序员来做,而是交给Spring容器来做。new实例工作的控制权不再由程序员掌控。

面向方面的程序设计 AOP(Aspect-Oriented Programming)

  • Spring 框架的一个关键组件是面向方面的程序设计(AOP)框架。
  • 一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样常见的很好的关于方面的例子,比如日志记录、声明性事务、安全性,和缓存等等。
  • 在 OOP 中模块化的关键单元是类,而在 AOP 中模块化的关键单元是方面。AOP 帮助你将横切关注点从它们所影响的对象中分离出来,然而依赖注入帮助你将你的应用程序对象从彼此中分离出来。
  • Spring 框架的 AOP 模块提供了面向方面的程序设计实现,可以定义诸如方法拦截器和切入点等,从而使实现功能的代码彻底的解耦出来。

体系结构

  • Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你挑选和选择适用于你的模块,不必要把剩余部分也引入。Spring 框架提供约 20 个模块,可以根据应用程序的要求来使用。
  • 下面的部分对在 Spring 框架中所有可用的模块给出了详细的介绍。

核心容器 模块

  • Core 模块
    • 提供了框架的基本组成部分。
      • 控制反转(IoC)
      • 依赖注入(DI)
  • Beans 模块
    • 提供 BeanFactory,工厂模式的经典实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦。
      • BeanFactory 接口
  • Context 模块
    • 建立在由core和 beans 模块的基础之上,它是访问定义和配置任何对象的媒介。
      • ApplicationContext 接口
  • SpEL模块(Spring Expression Language)
    • 提供了强大的表达式语言,用于在运行时查询和操作对象图。
      • EL 表达式

数据访问/集成 模块

  • JDBC 模块(Java Data Base Connectivity)
    • 提供了JDBC抽象层,它消除了冗长的JDBC编码和对数据库供应商特定错误代码的解析。
  • ORM 模块(Object Relational Mapping)
    • 提供了对流行的对象关系映射API的集成,包括JPA、JDO和Hibernate等。通过此模块可以让这些ORM框架和spring的其它功能整合,比如前面提及的事务管理。
  • OXM 模块(Object XML Mapping)
    • 提供了对OXM实现的支持,比如JAXB、Castor、XML Beans、JiBX、XStream等。
  • JMS 模块(Java Message Service)
    • 包含生产(produce)和消费(consume)消息的功能。从Spring 4.1开始,集成了spring-messaging模块。
  • Transactions 模块
    • 事务模块为实现特殊接口类及所有的 POJO 支持编程式和声明式事务管理。
      • 注:编程式事务需要自己写beginTransaction()、commit()、rollback()等事务管理方法,声明式事务是通过注解或配置由spring自动处理,编程式事务粒度更细。

Web 模块

  • Web 模块
    • 提供面向web的基本功能和面向web的应用上下文,比如多部分(multipart)文件上传功能、使用Servlet监听器初始化IoC容器等。它还包括HTTP客户端以及Spring远程调用中与web相关的部分。
  • Web-MVC 模块
    • 为web应用提供了模型视图控制(MVC)和REST Web服务的实现。
      • SpringMVC框架
  • Web-Socket 模块
    • 为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。
  • Web-Portlet 模块
    • 提供了用于Portlet环境的MVC实现,并反映了spring-webmvc模块的功能。
      其他

其他模块

  • AOP 模块
    • 提供了面向方面的编程实现。
      • 方法拦截器
      • 切点
  • Aspects 模块
    • 提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架
  • Instrumentation 模块
    • 在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。
  • Messaging 模块
    • 为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息。
  • Testing 模块
    • 支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。
-------------本文结束-------------
Donate comment here