Spring 特性总览

Posted binarylei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 特性总览相关的知识,希望对你有一定的参考价值。

Spring(01)特性总览

Spring 核心编程思想目录:https://www.cnblogs.com/binarylei/p/12290153.html

1. 环境说明

  • JDK8
  • Spring Framework 5.2.2
  • IDEA Community 2019

2. 内容概述

待补充...

3. Spring 特性

官方文档:https://docs.spring.io/spring/docs/5.2.2.RELEASE/spring-framework-reference/

3.1 核心特性(core)

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

3.2 数据存储(Data Access)

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

3.3 web技术栈(Web)

  • Web Servlet 技术栈

    • Spring MVC
    • WebSocket
    • Sockjs
  • Web Reactive 技术栈

    • Spring WebFlux

    • WebClient

    • WebSocket

3.4 技术整合(Integration)

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

3.5 测试(Testing)

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

4. Java 版本依赖与支持

Java版本依赖与支持
Spring Framework版本 Java标准版 Java企业版
1.x 1.3+ J2EE1.3+
2.x 1.4.2+ J2EE1.3+
3.x 5+ J2EE1.4 和 Java EE 5
4.x 6+ Java EE 6 和 7
5.x 8+ Java EE 7

说明: jdk 重大版本

  • jdk1.3 动态代理
  • jdk5+ 注解

5. Spring 对 Java API 的实践

5.1 Java 语法变法

Java 语法变法
JDK5 语法特性
语法特性 Spring 支持 代表实现
注解(Annotation) 1.2+ @Transactional
枚举(Enumeration) 1.2+ Propagation
注解() 3.0+ AbstractApplicationContext
自动装箱(AutoBoxing) 3.0+
泛型(Generic) 3.0+ ApplicationListener
JDK6 语法特性
语法特性 Spring 支持 代表实现
@Override 4.0+
JDK7 语法特性
语法特性 Spring 支持 代表实现
Diamond 语法 5.0+ DefaultListableBeanFactory
try-with-resources 语法 5.0+ ResourceBoudleMessageSource

注:Diamond 语法示例 Map<Integer, Map<String, String>> usersLists = new HashMap<>();

JDK8 语法特性
语法特性 Spring 支持 代表实现
Lamdba 语法 5.0+ PropertyEditRegistrySupport

5.2 JDK 核心 API

语法特性 jdk版本支持
反射(Reflection)
Java Beans
动态代理(Dynamic Proxy)
< Java 5
并发框架(JUC)
格式化(Formatter)
Java 管理扩展(JMX)
Instrumentation
XML 处理(DOM/SAX/XPath/XSTL)
Java 5
JDBC 4.0(JSR 221)
JAXB 2.0(JSR 222)
可插拔注解处理 API(JSR 269)
Common Annotations(JSR 250)
Java Compiler API(JSR 199)
Scripting in JVM(JSR 223)
Java 6
NIO 2(JSR 203)
Fork/Join(JSR 166)
invokedynamic 字节码(JSR 292)
Java 7
Stream API(JSR 203)
CompletableFuture(JUC)
Annotation on Java Types(JSR 308)
Date and Time(JSR 310)
可重复 Annotation(JSR 337)
javascript 运行时(JSR 223)
Java 8
Reactive Stream Flow API(JUC)
Process API Updates(JSR 102)
Variable Handles(JSR 193)
Method Handles(JSR 277)
Spin-Wait Hints(JSR 285)
Stack-Walking API(JSR 259)
Java 9

5.3 Spring 对 JDK 的实践

Java 5 API
API 类型 Spring 支持版本 代表实现
反射(Reflection) 1.0+ MethodMatcher
Java Beans 1.0+ CachedlntrospectionResults
动态代理(Dynamic Proxy) 1.0+ JdkDynamicAopProxy
Java 6 API
API 类型 Spring 支持版本 代表实现
JDBC 4.0(JSR 221) 1.0+ Jdbctemplate
Common Annotations (JSR 250) 2.5+ CommonAnnotationBeanPostprocessor
JAXB 2.0(JSR 222) 3.0+ Jaxb2Marshaller
Scripting in JVM (JSR 223) 4.2+ StandardScriptFactory
可插拔注解处理AP(JSR269) 5.0+ @Indexed
Java Compiler API(JSR 199) 5.0+ TestCompiler(单元测试)
Java 7 API
API 类型 Spring 支持版本 代表实现
Fork/Join框架(JSR166) 3.1+ ForkJoinPoolFactoryBean
NIO 2 ( JSR 203) 4.0+ PathResource
Java 8 API
API 类型 Spring 支持版本 代表实现
Date and Time(JSR 310) 4.0+ DateTimeContext
可重复 Annotation(JSR 337) 4.0+ @PropertySources
Stream API(JSR 203) 4.2+ StreamConverter
CompletableFuture(JUC) 4.2+ CompletableToListenableFutureAdapter

6. Spring 对 Java EE API 整合

6.1 Java EE Web 技术相关

JSR 规范 Spring 支持版本 代表实现
Servlet + JSP(JSR 035) 1.0 + DispatcherServlet
JSTL(JSR 052) 1.0 + JstlView
JavaServer Faces(JSR 127) 1.1 + FacesContextUtils
Portlet(JSR 168) 2.0 - 4.2 DispatcherPortlet
SOAP(JSR 067) 2.5 + SoapFaultException
WebServices(JSR 109) 2.5 + CommonAnnotationBeanPostProcessor
WebSocket(JSR 356) 4.0 + WebSocketHandler

6.2 Java EE 数据存储相关

JSR 规范 Spring 支持版本 代表实现
JDO(JSR 12) 1.0 - 4.2 JdoTemplate
JTA(JSR 907) 1.0 + JtaTransactionManager
JPA(EJB 3.0 JSR 220的成员) 2.0 + JpaTransactionManager
Java Caching API(JSR 107) 3.2 + JCacheCache

6.3 Java EE Bean 技术相关

JSR 规范 Spring 支持版本 代表实现
JMS(JSR 914) 1.1 + JmsTemplate
EJB 2.0 (JSR 19) 1.0 + AbstractStatefulSessionBean
Dependency Injection for Java(JSR 330) 2.5 + AutowiredAnnotationBeanPostProcessor
Bean Validation(JSR 303) 3.0 + LocalValidatorFactoryBean

7. Spring 编程模型

编程模型 说明
面向对象编程 1. 契约接口:Aware、BeanPostProcessor ...
2. 设计模式:观察者模式、组合模式、模板模式...
3. 对象继承:Abstract* 类
面向切面编程 1. 动态代理:JdkDynamicAopProxy
2. 字节码提升:ASM、CGLib、AspectJ...
面向元编程 1.注解:模式注解(@Component、@Service、@Respository ...)
2. 配置:Environment 抽象、PropertySources、BeanDefinition ...
3. 泛型:GenericTypeResolver、ResolvableType ...
函数驱动 1. 函数接口:ApplicationEventPublisher
2. Reactive:Spring WebFlux
模块驱动 1. Maven Artifacts
2. OSGI Bundles
3. Java 9 Automatic Modules
4. Spring @Enable*

8. Spring 面试题

问题1:什么是 Spring Framework?

...

问题2:Spring Framework 有哪些核心模块?

  • spring-core:Spring 基础API 模块,如资源管理,泛型处理
  • spring-beans:Spring Bean 相关,如依赖查找,依赖注入
  • spring-aop : Spring AOP 处理,如动态代理,AOP 字节码提升
  • spring-context : 事件驱动、注解驱动,模块驱动等
  • spring-expression:Spring 表达式语言模块

问题3:Spring Framework 的优势和不足是什么?

...

资源相关


每天用心记录一点点。内容也许不重要,但习惯很重要!

以上是关于Spring 特性总览的主要内容,如果未能解决你的问题,请参考以下文章

渲染管道光栅阶段一“总览”

渲染管道光栅阶段一“总览”

HTML5新特性总览

Spring 总览及 IOC 容器的使用 —— Spring 官方文档解读

ES6-11(2015-2020)特性总览与开发环境准备

SOFAMesh中的Go语言Sidecar代理SOFAMosn的诞生和特性总览