1. 程式人生 > >Spring---核心

Spring---核心

保持 高度 spring容器 三方 files 時代 com 容易 image

作為一個JAVA程序員來說,現在是最好的時代,也是最壞的時代。好,指的是現在市場上有很多的新技術,對於追求新技術的愛好者來說,無疑是利好的資源;壞,指的是對於剛步入市場的小雛鳥來說,是比較容易淹沒在技術的汪洋大海中的,為了追求日新月異的新技術而放棄了學習基礎知識。在工作了一段時間以後,終於下定決心,重新學習Spring。

為了降低Java開發的復雜性,Spring采取了以下策略:

(1)基於POJO的輕量級和最小侵入性編程

(2)通過依賴註入和面向接口實現松耦合

(3)基於切面進行聲明式編程

(4)通過切面和模板減少樣板式代碼

一、Java Bean

簡單說,Java Bean就是一個普通的Java類 --- POJO。POJO之所以有強大的功能,是因為Spring通過DI(依賴註入,也被稱為控制反轉)來裝配(創建組件之間的協作的行為稱為裝配)它們。在一個復雜的應用系統中,通常是由多個類組成的。傳統的做法是每個對象負責管理與自己協作的對象的引用,這會導致高度耦合和難以測試的代碼。Spring的核心之一---DI,就是為了解決這個問題而生的。在Spring中,各個對象的依賴關系有系統中負責協調各個對象的第三方組件在創建對象時

進行設定,而不需要對象親自去構建和維護它們的依賴關系。如圖所示:

技術分享

Spring有多種裝配bean的方式,采用XML是很常見的一種裝配方式。

技術分享

上面講到,Spring通過第三方組件將bean裝載起來,這個第三方組件就是應用上下文(Application Context)。Spring的Application Context全權負責對象的創建和組裝。Spring自帶了多種應用上下文的實現,不同之處在於它們加載配置的方式不同。

spring 的兩大核心是AOP(面向切面)和DI(依賴註入)。DI能夠讓相互協作的軟件組件保持松散耦合,而面向切面編程(aspect-oriented programming,AOP)允許你把遍布應用各處的功能分離出來,形成可重用的組件。後續詳細闡述AOP和DI

二、使用應用上下文

常用的應用上下文包括以下幾種:

(1)AnnotationConfigApplicationContext:從一個或多個基於Java的配置類中加載Spring應用上下文;

(2)AnnotationConfigWebApplicationContext:從一個或多個基於Java的配置類中加載Spring Web應用上下文;

(3)ClassPathXmlApplicationContext:從類路徑下的一個或多個XML配置文件中加載上下文定義,把應用上下文的定義文件作為類資源;

(4)FileSystemXmlapplicationcontext:從文件系統下的一個或多個XML配置文件中加載上下文定義;

(5)XmlWebApplicationContext:從Web應用下的一個或多個XML配置文件中加載上下文定義。

  使用FileSystemXmlApplicationContext和使用ClassPathXmlApp-licationContext的區別在於:FileSystemXmlApplicationContext在指定的文件系統路徑下查找knight.xml文件;而ClassPathXmlApplicationContext是在所有的類路徑(包含JAR文件)下查找 *.xml文件,在應用上下文準備完畢之後,我們就可以調用上下文的getBean()方法,從Spring容器中獲取bean。

Spring---核心