spring-core-1-04 | 特性总览:核心特性、数据存储、Web技术、框架整合与测试

核心特性

• IoC 容器(IoC Container)

必谈内容, 不用多说了

• Spring 事件(Events)

基于java的标准事件来进行的扩展, 但是有区别, 后面讲

• 资源管理(Resources)

继承与java的资源管理

• 国际化(i18n)

基于java的国际化进行实现

• 校验(Validation)

spring自己进行的API实现, Bean Validation

• 数据绑定(Data Binding)

spring自己进行的实现, 就是外部文件的一些属性, 如何与java的POJO的Setter, Getter来进行一个数据上的转化和绑定.

• 类型装换(Type Conversion)

有了绑定, 那么肯定就有类型转换, 两个是一起的

• Spring 表达式(Spring Express Language)

spring的表达式和JSP表达式是如出一辙的, 通过一些符号来引用变量, 来达到动态引用数据的目的

• 面向切面编程(AOP)

不用说, 必谈内容

数据存储(Data Access)

数据存储相对于核心内容单薄一点, 但是复杂度更大.

• JDBC

关系型数据库, 必然和JDBC打交道, 只不过在JDBC基础上做了些封装, 比如myBatis或者Hibernate
spring也在JDBC的API基础上做了一些相应的实现, 比如说jdbcTemplate

• 事务抽象(Transactions)

面试必考内容, 实际上事务抽象来源是 EJB, spring只是在其基础上做了一些简化工作.
事务抽象实际上在核心的实现中, 有一个单独的API或者单独的规范来进行实现, Spring也只是做了一些简单的封装

• DAO 支持(DAO Support)

是spring里面一个比较大的封装, 帮助我们简化DAO的写法或实现方式, 比如常见的SQLException的封装

• O/R映射(O/R Mapping)

早期可以看到spring对Hibernate的支持和对JDO的支持, JDO的后续替代者就是JPA, 而JPA的一个默认实现其实就是Hibernate, 所以讨论JPA基本就是讨论Hibernate

• XML 编列(XML Marshalling)

比较陌生, 与java的序列化进行对比, java的序列化就是这里的编列, 反序列化就是反编列, 如果熟悉JAXB(Java API for XML Binding), 会有所了解

Web 技术(Web)

按版本来说, spring1~4是支持的 Web Servlet 的技术栈, 从spring5之后开始引入了Web Reactive 技术栈

• Web Servlet 技术栈

• Spring MVC

需要Servlet引擎来支撑

• WebSocket

Servlet引擎规范在3.0以后的规划, 对WebSocket进行支持

• SockJS

不太常用, 在此不讨论

• Web Reactive 技术栈

• Spring WebFlux

API其实与Spring MVC是基本一样的, 但是在底层的实现有变化, WebFlux这里通常默认是Netty的web Server, 当然也可以用Servlet引擎来实现

• WebClient

为啥有个WebClient? 在spring5.0之前, 有个东西叫做 RestTemplate 或者叫做 HTTPClient, 这个东西是一个同步的Http执行客户端, WebClient引入之后, 它把过去的同步执行变成异步回调的方式

• WebSocket

技术整合(Integration)

这一部分比较庞杂, 因为这里没有一个具体的 API 或者 具体的规范来整合, 也就说是一个生态整合

• 远程调用(Remoting)

有几种实现, 如 RMI, Java的标准的远程方法调用; Hession, 是一个社区开源的方案, 如Dubbo就是基于Hession协议; 还有 Thrift协议, 也用于远程调用.
spring在这里做了一些统一的封装, 无论是使用Http的方式, 还是Hession的方式等调用, 他都可以通过统一的封装来进行.
与前面Reactive的不同点, 通常来说远程调用采用的是同步的模式.

• Java 消息服务(JMS)

Java Message Service, 这个就是异步的, 使用JMS规范实现, 比如ActiveMQ就是一个典型实现, 但是想Kafka, RocketMQ就不是JMS规范的实现

• Java 连接架构(JCA)

这个是JavaEE的架构, 主要用于统一Java的一些资源连接, 包括JDBC这样的连接, 但是用这个套路的人现在很少了

• Java 管理扩展(JMX)

Java Management Extensions, 这个用于Java的管理, 因为我们平常使用java主要关注其开源侧, 或者说其开发侧, 但是比较少关注其运维侧.
比如我们要关注下其CPU的利用率, 磁盘利用率 , 都可以通过JMX来进行查询.
但是JMX比较复杂, 其包含了四大模型, 比如说它有标准Bean, 有动态Bean,
动态Bean又包含三种, 标准动态Bean以及模型动态Bean和开放Bean.
这几种方式在spring的优化之后变得非常简单, 从spring framework 1.2 之后引入了一个注解, @ManagementResource , 这个注解能够帮助我们简化我们的实现.

• Java 邮件客户端(Email)

这个用spring的还是用Java本身的, 见仁见智, 看自己需要就好了

• 本地任务(Tasks)

本地调度类似, 都是利用java的多线程来实现的, 但是要注意既然是本地, 就说明这个东西是单机版的, 并不是分布式的, 而业界有很多开源的方案是分布式的, 或者用Java的JUC框架也可以实现它的响应的调度, 原理上类似

• 本地调度(Scheduling)

• 缓存抽象(Caching)

一个很有意思的封装, 简化了缓存里面的基本操作, CRUD, 通过注解的方式帮助你简化这些操作, 实现缓存的透明化, 在调用一些普通方法是也能实现缓存的应用.

• Spring 测试(Testing)

测试(Testing)

• 模拟对象(Mock Objects)

什么是Mock对象, 比如说像HttpServletRequest对象, 这个对象通常只能从Servlet引擎里面才能获取到, 同时要把Tomcat或者Jetty打开, 通过外部的请求来触发我们对象的生成, 而 Mock对象我们可以动态的去生成它,
在spring中, 可以生成一个 MockHttp对象, 帮助我们完成单元测试

• TestContext 框架(TestContext Framework)

spring对其集成测试的一个整合, 比如进行集成测试, 需要调用数据库连接, 就需要将sping的上下文启动, 那么就需要用到这个框架

• Spring MVC 测试(Spring MVC Test)

Web环境下肯定需要这个, 支持SpringMVC的,

• Web 测试客户端(WebTestClient)

通常spring是在服务端进行测试, 而这个就是帮助我们在客户端进行测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值