Spring特性总览

一、核心特性

  • IoC 容器(IoC Container)
  • Spring 事件(Events)
  • 资源管理(Resources)
  • 国际化(i18n)
  • 校验(Validation)
  • 数据绑定(Data Binding)
  • 类型装换(Type Conversion)
  • Spring 表达式(Spring Express Language)
  • 面向切面编程(AOP)
 

二、数据存储

  • JDBC
  • 事务抽象(Transactions)
  • DAO 支持(DAO Support)
  • O/R映射(O/R Mapping)
  • XML 编列(XML Marshalling)

三、Web 技术

  • Web Servlet 技术栈
    • Spring MVC
    • WebSocket
    • SockJS
  • Web Reactive 技术栈
    • Spring WebFlux
    • WebClient
    • WebSocket

四、技术整合

  • 远程调用(Remoting)
  • Java 消息服务(JMS)
  • Java 连接架构( JCA)
  • Java 管理扩展(JMX)
  • Java 邮件客户端(Email)
  • 本地任务(Tasks)
  • 本地调度(Scheduling)
  • 缓存抽象(Caching)
  • Spring 测试(Testing)

五、测试

  • 模拟对象(Mock Objects)
  • TestContext 框架(TestContext Framework)
  • Spring MVC 测试(Spring MVC Test)
  • Web 测试客户端(WebTestClient)
 
 
 

记录小马哥的讲解

  为了避免从入门到劝退,本人把小马哥视频中讲解的语言记录下来了,部分语言稍作修改。

  1、核心特性包括  第一,IoC 容器、老生常谈的啦。

          第二,Spring 事件(是基于java的标准事件进行扩展的,但是和java的标准事件还有些区别,后面详细描述。)

          第三,资源管理也是继承于Java的一些资源管理,有些API是借鉴了Java核心的底层API的一个实现。

          第四,国际化,Java其实默认就支持国际化,因此Spring国际化也是基于Java API进行实践的。

          第五,校验,Java JDK底层是没有提供的,是Spring自己做了一些特殊的一些API设置。比如借鉴Bean Validation, Spring在它的Framework里面做了Bean Validation的一个整合。

          第六,数据绑定,在Java里面也没有特别实现,是Spring特有的实现。简单说是,外面的属性和Java 的 POJO的Setter、Getter来进行一个数据上的转化和绑定。

          第七,类型装换,有了数据绑定,就会涉及到类型转换,也是Spring核心特性之一。能够帮助我们进行更好的有扩展性的类型转换。

          第八,Spring 表达式,和JSP表达式是如出一辙的,在JSP里面可以通过符号的方式引用变量,达到实现动态调用的目的。

          第九,面向切面编程,常说的AOP。

  2、数据存储包括 第一,JDBC,关系型数据库务必会和JDBC打交道,只不过是在JDBC上面做了一些封装,比如MyBatis、Hibernete。JDBC是java API和数据库打交道的一个通道,Spring在此做了相应的实现,比如 jdbcTemplate。

          第二,事务抽象,面试必考的内容,实际上来源于EJB, Spring 只不过在上面做了一些简化操作。事物的抽象在实现中有一个单独的API或者单独的规范来进行实现,Spring也只是做了一些简单的封装。

          第三,DAO 支持,Spring做了很大的封装,简化DAO的一个写法和实现方式,比如常见的SQLException。

          第四,O/R映射,早期了解到Spring对Hibernete的支持,Spring对JDO的支持,后面JPA替代了JDO,JPA默认的实现就是Hibernete,因此讨论JPA和讨论Hibernete是讨论一个东西。

          第五,编列,把 xml 和Java的序列号进行对比的话,Java的序列化就相当于这里的编列,反序列化就是反编列。熟悉JAXB(Java API for XML Binding)的话,会对此有了解。

  3、Web技术包括 Web Servlet 技术栈,Web Reactive 技术栈。

          第一,按照版本的分布, Web Servlet 技术栈是从Spring 1 到 Spring 4版本的唯一支持,从Spring 5才开始引入Web Reactive 技术栈。

          第二,Reactive 技术栈包括Spring WebFlux、Spring MVC,其实这两个在注解上面是一模一样的,只是底层的实现发生了变化。传统的Spring MVC是需要Servlet引擎进行支撑的。

          第三,Reactive通常默认情况下是Netty的 Web server。当然Reactive也是可以运用Spring MVC 的引擎进行实现的,也就是说可以用到Servlet引擎进行实现。于此不同的是Servlet规范里面在3.0以后规划是对websocket进行支持,那么Web Servlet 技术栈也会有这方面的支持。关于SockJS也是一个技术栈,这里不做讨论。

          第四,关于 Reactive的两个部分理解,一个是WebSocket,一个是WebClient,在早期的时候,Spring框架5.0之前,有个东西叫RestTemplete或者叫HttpClient是一个同步的Http的执行客户端,那么WebClient引用之后,它把过去的同步执行变成异步回调的方式。其实Web Reactive和Spring MVC 几乎如出一辙,只不过在API封装上面做出了一些变化。

  4、技术整合,内容比较庞杂,相当于是一个生态的整合。

          第一,远程调用(Remoting ),有几种方式的实现,比如:RMI, Java标准的远程方法调用; Hessian社区开源的一个方案,Dubbo是基于Hessian协议的。那么Spring Framework做了一层封装,无论你是基于HTTP的调用还是常说的Hessian调用,都可以通过统一的封装来执行方法的调用得到结果。和之前讲的Reactive不同点是,通常来说远程的调用是采用同步的模式。那么异步的模式如下面所讲的Java的消息服务。

          第二,消息服务(JMS),全称Java Message Service,这是一个异步的调用用传统的JMS规范来实现。比如说ActiveMQ,但是Kafka, RocketMQ,等并不是用传统的JMS规范来实现的。

          第三,Java 连接架构,Java EE的一套架构,主要是统一一些Java的资源连接(如JDBC连接)。

          第四,Java 管理扩展(JMX),全称 Java Management Extensions,用于Java的一个管理。对于大多数程序员来说,关注的是开源侧、开发侧,不太关注运维侧,比如,cpu利用率,磁盘利用率,都可以通过JMX来进行查询。

          第五,Java邮件客户端,顶不住了,不写了,都是介绍,后面详细了解,这里了解目录大概。

  

posted @ 2020-07-22 20:05  甘劭  阅读(2613)  评论(0编辑  收藏  举报