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 版本依賴與支持
| 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 語法變法
| 語法特性 | Spring 支持 | 代表實現 |
|---|---|---|
| 注解(Annotation) | 1.2+ | @Transactional |
| 枚舉(Enumeration) | 1.2+ | Propagation |
| 注解() | 3.0+ | AbstractApplicationContext |
| 自動裝箱(AutoBoxing) | 3.0+ | |
| 泛型(Generic) | 3.0+ | ApplicationListener |
| 語法特性 | Spring 支持 | 代表實現 |
|---|---|---|
| @Override | 4.0+ |
| 語法特性 | Spring 支持 | 代表實現 |
|---|---|---|
| Diamond 語法 | 5.0+ | DefaultListableBeanFactory |
| try-with-resources 語法 | 5.0+ | ResourceBoudleMessageSource |
注:Diamond 語法示例 Map<Integer, Map<String, String>> usersLists = new HashMap<>();
| 語法特性 | 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 的實踐
| API 類型 | Spring 支持版本 | 代表實現 |
|---|---|---|
| 反射(Reflection) | 1.0+ | MethodMatcher |
| Java Beans | 1.0+ | CachedlntrospectionResults |
| 動態代理(Dynamic Proxy) | 1.0+ | JdkDynamicAopProxy |
| 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(單元測試) |
| API 類型 | Spring 支持版本 | 代表實現 |
|---|---|---|
| Fork/Join框架(JSR166) | 3.1+ | ForkJoinPoolFactoryBean |
| NIO 2 ( JSR 203) | 4.0+ | PathResource |
| 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 的優勢和不足是什么?
...
資源相關
- JSR 官方網址:https://jcp.org/
- 小馬哥 JSR 收藏:https://github.com/mercyblitz/jsr
- Spring 官方文檔:https://docs.spring.io/spring/docs/
每天用心記錄一點點。內容也許不重要,但習慣很重要!
