Spring是現(xiàn)今Java開發(fā)人員最常用的框架表锻,開發(fā)人員使用Spring來構(gòu)建高性能的恕齐,易于測試的,可重用的代碼瞬逊。使用Spring显歧,Java開發(fā)人員的效率極大提升仪或。
什么是Spring?
這可能是一個面試時常問到士骤,或入門的開發(fā)人員常問的問題范删,回答起來比較難。我剛開始學(xué)的時候拷肌,講師說它有兩大核心功能IOC和AOP到旦,自己用了很久才能對這些概念理解的更清晰一點(diǎn)。
Spring是一個輕量級的框架巨缘,這里的輕量級不是說庫或者類的大小添忘,而是說Spring對我們的應(yīng)用有很少的侵入作用,當(dāng)我們不使用Spring的時候带猴,只需改動很少我們的代碼昔汉。使用Spring的時候,Spring也提供了很多的組件來加快我們的開發(fā)拴清。
Spring特性
官方參考文檔有提供各個版本新特性靶病,這里列舉大版本特性
4.x 版本新特性
參考New Features and Enhancements in Spring Framework 4.X
- 全面支持Java8.0
- 核心容器增強(qiáng),添加@Description口予,提供@Conditional注解實(shí)現(xiàn)Bean條件過濾娄周,@Lazy注解解決Bean延時依賴注入等
- 支持Groovy定義Bean,其類似于XML沪停,但是比XML更加靈活
- Web增強(qiáng)煤辨,支持Servlet 3.0,引入@RestController木张,AsyncTemplate進(jìn)行客戶端異步無阻塞請求
- 支持Websocket
- 測試的增強(qiáng)
5.x 新特性
參考What's New in Spring Framework 5.x
- 兼容Java 9
- 反應(yīng)式編程模型
- 函數(shù)式編程
- HTTP/2的支持
- 使用Junit5進(jìn)行單元測試
- 對Kotlin支持
Spring技術(shù)架構(gòu)
Spring 5按功能分為以下幾個大模塊:
- Core: IoC container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP.
- Testing: Mock objects, TestContext framework, Spring MVC Test, WebTestClient.
- Data Access: Transactions, DAO support, JDBC, ORM, Marshalling XML.
- Web Servlet: Spring MVC, WebSocket, SockJS, STOMP messaging.
- Web Reactive : Spring WebFlux, WebClient, WebSocket.
- Integration: Remoting, JMS, JCA, JMX, Email, Tasks, Scheduling, Cache.
- Languages : Kotlin, Groovy, Dynamic languages.
Spring的子項(xiàng)目則如下:Spring Projects列表
- Spring Boot: 可以很容易的創(chuàng)建獨(dú)立運(yùn)行的Spring應(yīng)用众辨,內(nèi)嵌Tomcat,Jetty或者Undertow, 提供生產(chǎn)級別的特性如metrics,健康檢查和外部配置舷礼。
- Spring Data: 提供統(tǒng)一的基于Spring的數(shù)據(jù)訪問模型鹃彻,Spring Data下針對不同的數(shù)據(jù)庫提供了很多子的項(xiàng)目
- Spring AMQP: 提供了高度抽象的模板,用于集成消息中間件
- Spring Session: 提供API來管理用戶的Session信息妻献。
... 還有很多不同的項(xiàng)目
小結(jié)
Spring給開發(fā)者帶來了很多便捷蛛株,它已經(jīng)成為了Java開發(fā)人員必須要掌握的一項(xiàng)基本技能,這里主要是對Spring做一個概述育拨,了解Spring的基本結(jié)構(gòu)與所涉及的一些東西谨履。