1. 程式人生 > >正式開始瞭解和學習Spring全家桶 ——— 開始工作中的學習生涯

正式開始瞭解和學習Spring全家桶 ——— 開始工作中的學習生涯

正式開始瞭解和學習Spring全家桶 ——— 開始工作中的學習生涯

前言

經過一段時間的迷茫,我深深的感受到自己學習效率的低下,由於(實習)工作之後的生活個人可支配時間減少,自己又不滿足於重複性的工作(雖然依舊在努力接受知識,但是還是無法真切的感受到自己技術上的提升),我發現一些近期的個人問題並立志於改變這種糟糕的現狀 :

1. 對自己的時間沒有明確的計劃,導致沒有學習動力

想起來就看看,沒有有效利用時間,太過碎片化的學習往往讓自己對很多知識都淺嘗輒止

2. 對自己的學習方向和起點沒有準確的定位

思維太過跳躍,總是想到什麼去看什麼(興趣本身並沒有錯,但要處理完當前的事情,可以先把自己的靈感點記錄下來再看),缺少系統學習一項知識的耐心

3. 對個人能力的判斷不準確

因為涉及範圍廣,導致自己總覺得“事無不可為”,其實即使瞭解了大概的理論和框架,本質上卻沒有深刻的感悟,非常不利於之後的學習和成長。

而這篇筆記將作為我未來一段時間內的對學習的引導和督促者。

方案

一、開始Spring的學習

為什麼從spring入手

在java開發方面,Spring的重要性和影響力是毋庸置疑的,除此之外,不論是初級開發者還是高階架構師,都可以從Spring中學習到很多:後端開發、設計思想、Java基礎、設計模式、甚至一些創造靈感,首先、spring是很有潛力的

再就是,spring對於每個接觸過Java語法的人是友好的

最後,便是因為個人對Spring的掌握並不紮實,在這個Spring全家桶在Java界大行其道的環境下,這個簡直是致命傷,這讓我其他方面的知識儲備在面試時顯得蒼白無力。

二、學習計劃

說了很多無關緊要的話,下面就是重點了:

我決定將我對spring的學習分為以下幾個層次,並對這些模組進行了解使用和原理的簡單探索。(計劃在每個大章節之後進行原理推測專題的更帖)

一、Spring

  1. Spring概述(本章節講解)
  2. SpringIoc容器
  1. Spring依賴注入
  2. Spring自動裝配
  3. Spring基於註解的配置
  1. Spring框架和AOP
  2. Spring JDBC框架
  3. Spring事務管理
  4. Spring Web MVC

二、 SSM

  1. Spring MVC
  2. MyBatis
  3. 搭建一個簡單的SSM專案結構

三、SSH

  1. struts2
  2. hibernate
  3. 搭建一個簡單的SSH專案結構

四、Spring cloud

  1. Spring Boot
  2. 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框架的組成結構圖如下所示:
image

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