zoukankan      html  css  js  c++  java
  • Spring基本介绍

    一:Spring是什么

      Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架它以IOC控制反转和AOP面向切面编程为核心,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术;还有个强大之处就是可以整合众多的第三方开源框架和类库,所以逐渐成为使用最多的 Java EE 企业级应用的开源框架。

    full-stack:

      full-stack 的设计,意味着各层能够无缝的集成在一起,遵循的DRY原则(don't repeat yourself),将各层共用的东西,抽取出来,并通过自顶向下的设计,无缝的集成在一起,粘合在一起,达到更高层次、更粗粒度的重用,同时为了保证灵活的可扩展性,在更高、更粗的粒度上遵守开放-封闭的原则,在各层的各个关键点,要提供诸多的钩子,回调的接口,供使用者扩展。full-stack的设计,在层与层之间,并不一味的追求松散的机制,而是相反,在层与层之间增强一定的内聚性,粘合力,以此来达到粗粒度的封装与重用。full-stack 的设计,其爆发出的威力是巨大的,相对普通的单一层面的设计,在开发效率上不是一个层次上的,基于28原理的设计,可以满足80的调用者直接开发,19%的调用者,通过扩展点进行扩展来满足需求,对于1%钻角尖的需求,自己去造轮子。Spring就是使用这样的设计,我们设计如果以它们为中心,生产力可以极大提高

    IOC(Inversion of Control):

      IOC是控制反转,它不是一种技术,而是一种设计思想,IOC将你设计好的对象交给容器管理,而不是再内部直接创建出来

    AOP(Aspect Orient Programming):

      AOP是面向切面编程,可以说面向对象编程OOP是从静态角度考虑程序结构,而面向切面编程AOP是从动态角度考虑程序运行结果

    二: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)

      在最初的EJB 1 时代(EJB 简单来说就是把已经编写好的程序/类打包放在服务器上执行),可谓说是一个”黑暗“时代,正好也是一个J2EE规范统治的时代,基于各种容器和 J2EE 规范的软件解决方案是唯一的“正道”,沉重的研发模式和生态让那个时代的开发者痛苦不堪。可是随着经典巨著《Expert One-on-One J2EE Design and Development》的诞生,重规范时代终于迎来了一线曙光,该书的作者 Rod Johnson 在书中阐述了轻量级框架的研发理念,对原有笨重的规范进行了抨击,并基于书中的理念推出了最初版的 Spring 框架,Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-on-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。所以延续至今已达 10 多年之久

    三:Spring的优势特点

    1:方便解耦,简化开发(IOC)

      Spring内部提供IOC容器,可以将对象间的依赖关系交由Spring进行控制,避免类与类之间的过度依赖而产生程序耦合。用户不必再编写单例模式类、属性文件解析等底层的代码需求,Spring IOC可以让我们可以更专注与上层业务逻辑代码

    2:AOP 编程的支持

      通过 Spring 的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松应付。

    3:声明式事务的支持

      可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,提高开发效率和质量。

    4:方便程序的测试

      可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。

    5:方便集成各种优秀框架

      Spring 可以降低各种框架的使用难度,提供了对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的直接支持。

    6:降低 JavaEE API 的使用难度

      Spring 对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些 API 的使用难度大为降低。

    7:Java 源码是经典学习范例

      Spring 的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对 Java 设计模式灵活运用以及对 Java 技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。

     四:Spring体系结构

      上图是 Spring 框架的所有模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选择性地使用所需要的模块。下面分别对这些模块的作用进行简单介绍。

    1. Data Access/Integration(数据访问/集成)

    数据访问/集成层包括 JDBC、ORM、OXM、JMS 和 Transactions 模块

    ①:JDBC 模块:
        提供了一个 JDBC 的抽象层,大幅度减少了在开发过程中对数据库操作的编码。
    ②:ORM 模块:
        对流行的对象关系映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成层。
    ③:OXM 模块:
        提供了一个支持对象/XML 映射的抽象层实现,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
    ④:JMS 模块:
        指 Java 消息服务,包含的功能为生产和消费的信息。
    ⑤:Transactions 事务模块:
        支持编程和声明式事务管理实现特殊接口类,并为所有的 POJO。

    2:Web模块

    Spring 的 Web 层包括 Web、Servlet、Struts 和 Portlet 组件

    ①:Web 模块:
        提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IoC 容器初始化以及 Web 应用上下文。
    ②:Servlet模块:
        包括 Spring 模型—视图—控制器(MVC)实现 Web 应用程序。
    ③:Struts 模块:
        包含支持类内的 Spring 应用程序,集成了经典的 Struts Web 层。
    ④:Portlet 模块:
        提供了在 Portlet 环境中使用 MV C实现,类似 Web-Servlet 模块的功能。

    3:Core Container(核心容器)

     Spring 的核心容器是其他模块建立的基础,由 Beans 模块、Core 核心模块、Context 上下文模块和 Expression Language 表达式语言模块组成

    ①:Beans 模块:
        提供了 BeanFactory,是工厂模式的经典实现,Spring 将管理对象称为 Bean。
    ②:Core 核心模块:
        提供了 Spring 框架的基本组成部分,包括 IoC 和 DI 功能。
    ③:Context 上下文模块:
        建立在核心和 Beans 模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext 接口是上下文模块的焦点。
    ④:Expression Language 模块:
        是运行时查询和操作对象图的强大的表达式语言。

    4:其它模块

    Spring的其他模块还有 AOP、Aspects、Instrumentation 以及 Test 模块

    ①:AOP 模块:
        提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性。
    ②:Aspects 模块:
        提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。
    ③:Instrumentation 模块:
        提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
    ④:Test 模块:
        支持 Spring 组件,使用 JUnit 或 TestNG 框架的测试。

    .

  • 相关阅读:
    IIS 无法下载EXE
    大数据ListView
    vss error reading from file
    fatal error LNK1107
    A Generic Singleton Class
    转 ORACLE 的FOR循环、游标、时间值函数、转换函数题目
    regsvr32.exe 会用
    MSChat 临时目录
    关于LinkedList的三种写法的效率
    旋转门压缩算法
  • 原文地址:https://www.cnblogs.com/antLaddie/p/12813251.html
Copyright © 2011-2022 走看看