王小码

导航

Spring(1)Spring概述

1.Spring概述

(1)什么是Spring

  Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 SpringMVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。 

(2)Spring发展历程

  1997 年 IBM 提出了 EJB 的思想。
  1998 年,SUN 制定开发标准规范 EJB1.0。
  1999 年,EJB1.1 发布。
  2001 年,EJB2.0 发布。
  2003 年,EJB2.1 发布。
  2006 年,EJB3.0 发布。
  Rod Johnson(spring 之父): 
  Expert One-to-One J2EE Design and Development(2002)
  阐述了 J2EE 使用 EJB 开发设计的优点及解决方案
  Expert One-to-One J2EE Development without EJB(2004)
  阐述了 J2EE 开发不使用 EJB 的解决方式(Spring 雏形)。
  2017 年 9 月份发布了 spring 的最新版本 spring 5.0 通用版(GA)

(3)Spring好处

  • 轻量:Spring 是轻量的,基本的版本大约2MB
  • 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
  • 面向切面的编程(AOP)Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
  • 容器:Spring 包含并管理应用中对象的生命周期和配置。
  • MVC框架SpringWEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
  • 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
  • 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBCHibernate or JDO抛出的)转化为一致的unchecked 异常。

(4)Spring功能

 

  • 轻量级 - Spring 在代码量和透明度方面都很轻便。
  • IOC - 控制反转
  • AOP - 面向切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。
  • 容器 - Spring 负责创建和管理对象(Bean)的生命周期和配置。
  • MVC - 对 web 应用提供了高度可配置性,其他框架的集成也十分方便。
  • 事务管理 - 提供了用于事务管理的通用抽象层。Spring 的事务支持也可用于容器较少的环境。
  • JDBC 异常 - Spring 的 JDBC 抽象层提供了一个异常层次结构,简化了错误处理策略。

(5)Spring体系结构

  • Spring 核心容器 – 该层基本上是 Spring Framework 的核心。它包含以下模块:
    • Spring Core
    • Spring Bean
    • SpEL (Spring Expression Language)
    • Spring Context
  • 数据访问/集成 – 该层提供与数据库交互的支持。它包含以下模块:
    • JDBC (Java DataBase Connectivity)
    • ORM (Object Relational Mapping)
    • OXM (Object XML Mappers)
    • JMS (Java Messaging Service)
    • Transaction
  • Web – 该层提供了创建 Web 应用程序的支持。它包含以下模块:
    • Web
    • Web – Servlet
    • Web – Socket
    • Web – Portlet
  • AOP – 该层支持面向切面编程
  • Instrumentation – 该层为类检测和类加载器实现提供支持。
  • Test – 该层为使用 JUnit 和 TestNG 进行测试提供支持。
  • 几个杂项模块:
    • Messaging – 该模块为 STOMP 提供支持。它还支持注解编程模型,该模型用于从 WebSocket 客户端路由和处理 STOMP 消息。
    • Aspects – 该模块为与 AspectJ 的集成提供支持。

      

 

posted on 2020-03-06 17:06  王小码  阅读(168)  评论(0编辑  收藏  举报