正式開始瞭解和學習Spring全家桶 ——— 開始工作中的學習生涯
正式開始瞭解和學習Spring全家桶 ——— 開始工作中的學習生涯
前言
經過一段時間的迷茫,我深深的感受到自己學習效率的低下,由於(實習)工作之後的生活個人可支配時間減少,自己又不滿足於重複性的工作(雖然依舊在努力接受知識,但是還是無法真切的感受到自己技術上的提升),我發現一些近期的個人問題並立志於改變這種糟糕的現狀 :
1. 對自己的時間沒有明確的計劃,導致沒有學習動力
想起來就看看,沒有有效利用時間,太過碎片化的學習往往讓自己對很多知識都淺嘗輒止
2. 對自己的學習方向和起點沒有準確的定位
思維太過跳躍,總是想到什麼去看什麼(興趣本身並沒有錯,但要處理完當前的事情,可以先把自己的靈感點記錄下來再看),缺少系統學習一項知識的耐心
3. 對個人能力的判斷不準確
因為涉及範圍廣,導致自己總覺得“事無不可為”,其實即使瞭解了大概的理論和框架,本質上卻沒有深刻的感悟,非常不利於之後的學習和成長。
而這篇筆記將作為我未來一段時間內的對學習的引導和督促者。
方案
一、開始Spring的學習
為什麼從spring入手
在java開發方面,Spring的重要性和影響力是毋庸置疑的,除此之外,不論是初級開發者還是高階架構師,都可以從Spring中學習到很多:後端開發、設計思想、Java基礎、設計模式、甚至一些創造靈感,首先、spring是很有潛力的
再就是,spring對於每個接觸過Java語法的人是友好的
最後,便是因為個人對Spring的掌握並不紮實,在這個Spring全家桶在Java界大行其道的環境下,這個簡直是致命傷,這讓我其他方面的知識儲備在面試時顯得蒼白無力。
二、學習計劃
說了很多無關緊要的話,下面就是重點了:
我決定將我對spring的學習分為以下幾個層次,並對這些模組進行了解使用和原理的簡單探索。(計劃在每個大章節之後進行原理推測專題的更帖)
一、Spring
- Spring概述(本章節講解)
- SpringIoc容器
- Spring依賴注入
- Spring自動裝配
- Spring基於註解的配置
- Spring框架和AOP
- Spring JDBC框架
- Spring事務管理
- Spring Web MVC
二、 SSM
- Spring MVC
- MyBatis
- 搭建一個簡單的SSM專案結構
三、SSH
- struts2
- hibernate
- 搭建一個簡單的SSH專案結構
四、Spring cloud
- Spring Boot
- Spring Cloud
由於個人能力的侷限性,這個學習計劃可能並不完善,我會在今後的時間內盡力將這些知識進行掌握,相信隨著學習的深入我會有更多的收穫的。(目前希望自己能每天都對其中的一個體系進行總結和文章的釋出,加油,衝鴨!!!)
----------- 分割線 ------------
spring概述
概述
Spring 是最受歡迎的企業級 Java 應用程式開發框架,數以百萬的來自世界各地的開發人員使用Spring 框架來建立效能好、易於測試、可重用的程式碼。
Spring 框架是一個開源的 Java 平臺,它最初是由 Rod Johnson 編寫的,並且於 2003 年 6 月首次在 Apache 2.0 許可下發布。
Spring 是輕量級的框架,其基礎版本只有 2 MB 左右的大小。
Spring 框架的核心特性是可以用於開發任何 Java 應用程式,但是在 Java EE 平臺上構建 web 應用程式是需要擴充套件的。 Spring 框架的目標是使 J2EE 開發變得更容易使用,通過啟用基於 POJO 程式設計模型來促進良好的程式設計實踐。
Spring總結起來優點如下:
- 低侵入式設計,程式碼的汙染極低。
- 獨立於各種應用伺服器,基於Spring框架的應用,可以真正實現Write Once,Run Anywhere的承諾。
- Spring的IoC容器降低了業務物件替換的複雜性,提高了元件之間的解耦。
- Spring的AOP支援允許將一些通用任務如安全、事務、日誌等進行集中式管理,從而提供了更好的複用。
- Spring的ORM和DAO提供了與第三方持久層框架的良好整合,並簡化了底層的資料庫訪問。
- Spring的高度開放性,並不強制應用完全依賴於Spring,開發者可自由選用Spring框架的部分或全部。
Spring框架的組成結構圖如下所示:
Spring的核心機制
管理Bean
程式主要是通過Spring容器來訪問容器中的Bean,ApplicationContext是Spring容器最常用的介面,該介面有如下兩個實現類:
- ClassPathXmlApplicationContext: 從類載入路徑下搜尋配置檔案,並根據配置檔案來建立Spring容器。
- FileSystemXmlApplicationContext: 從檔案系統的相對路徑或絕對路徑下去搜索配置檔案,並根據配置檔案來建立Spring容器。
public class BeanTest{
public static void main(String args[]) throws Exception{
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
Person p = ctx.getBean("person", Person.class);
p.say();
}
}
Eclipse使用Spring
在Eclipse等IDE工具中,使用者可以自建User Library,然後把Spring的Jar包都放入其中,當然也可以將Jar包直接放在專案的/WEB-INF/lib目錄下,但是如果使用User Library,在專案釋出時,需要將使用者庫所引用的Jar檔案隨應用一起釋出,就是將User Library所使用的Jar複製到/WEB-INF/lib目錄下,這是因為對於一個Web應用,Eclipse部署Web應用時不會將使用者庫的Jar檔案複製到/WEB-INF/lib下,需要手動複製。
依賴注入
Spring框架的核心功能有兩個:
- Spring容器作為超級大工廠,負責建立、管理所有的Java物件,這些Java物件被稱為Bean。
- Spring容器管理容器中Bean之間的依賴關係,Spring使用一種被稱為"依賴注入"的方式來管理Bean之間的依賴關係。
使用依賴注入,不僅可以為Bean注入普通的屬性值,還可以注入其他Bean的引用。依賴注入是一種優秀的解耦方式,其可以讓Bean以配置檔案組織在一起,而不是以硬編碼的方式耦合在一起。
Spring 涉及的幾個概念
依賴注入(DI)
Spring 最認同的技術是控制反轉的依賴注入(DI)模式。控制反轉(IoC)是一個通用的概念,它可以用許多不同的方式去表達,依賴注入僅僅是控制反轉的一個具體的例子。
當編寫一個複雜的 Java 應用程式時,應用程式類應該儘可能的獨立於其他的 Java 類來增加這些類可重用可能性,當進行單元測試時,可以使它們獨立於其他類進行測試。依賴注入(或者有時被稱為配線)有助於將這些類粘合在一起,並且在同一時間讓它們保持獨立。
到底什麼是依賴注入?讓我們將這兩個詞分開來看一看。這裡將依賴關係部分轉化為兩個類之間的關聯。例如,類 A 依賴於類 B。現在,讓我們看一看第二部分,注入。所有這一切都意味著類 B 將通過 IoC 被注入到類 A 中。
依賴注入可以以向建構函式傳遞引數的方式發生,或者通過使用 setter 方法 post-construction。由於依賴注入是 Spring 框架的核心部分,所以我將在一個單獨的章節中利用很好的例子去解釋這一概念。
面向方面的程式設計(AOP):
Spring 框架的一個關鍵元件是面向方面的程式設計(AOP)框架。一個程式中跨越多個點的功能被稱為橫切關注點,這些橫切關注點在概念上獨立於應用程式的業務邏輯。有各種各樣常見的很好的關於方面的例子,比如日誌記錄、宣告性事務、安全性,和快取等等。
在 OOP 中模組化的關鍵單元是類,而在 AOP 中模組化的關鍵單元是方面。AOP 幫助你將橫切關注點從它們所影響的物件中分離出來,然而依賴注入幫助你將你的應用程式物件從彼此中分離出來。
Spring 框架的 AOP 模組提供了面向方面的程式設計實現,可以定義諸如方法攔截器和切入點等,從而使實現功能的程式碼徹底的解耦出來。使用原始碼級的元資料,可以用類似於.Net屬性的方式合併行為資訊到程式碼中。我將在一個獨立的章節中討論更多關於 Spring AOP 的概念。
參考文章:
https://www.w3cschool.cn/wkspring/pesy1icl.html
https://yaningnaw.github.io/2018/11/02/Spring.html