Spring初體驗__java

來源:互聯網
上載者:User

一、簡介

  Spring 是一個開源架構,是為瞭解決公司專屬應用程式程式開發複雜性而建立的。架構的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個組件,同時為 J2EE 應用程式開發提供整合的架構。

 二、架構

Spring 架構是一個分層架構,由 7 個定義良好的模組組成。Spring 模組構建在核心容器之上,核心容器定義了建立、配置和管理 bean 的方式,如圖 1 所示。
圖 1. Spring 架構的 7 個模組
 

組成 Spring 架構的每個模組(或組件)都可以單獨存在,或者與其他一個或多個模組聯合實現。每個模組的功能如下: 核心容器:核心容器提供 Spring 架構的準系統。核心容器的主要組件是 BeanFactory,它是原廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程式的配置和依賴性規範與實際的應用程式代碼分開。 Spring 上下文:Spring 上下文是一個設定檔,向 Spring 架構提供上下文資訊。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校正和調度功能。 Spring AOP:通過組態管理特性,Spring AOP 模組直接將面向方面的編程功能整合到了 Spring 架構中。所以,可以很容易地使 Spring 架構管理的任何對象支援 AOP。Spring AOP 模組為基於 Spring 的應用程式中的對象提供了交易管理服務。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性交易管理整合到應用程式中。 Spring DAO:JDBC DAO 抽象層提供了有意義的異常階層,可用該結構來管理異常處理和不同資料庫供應商拋出的錯誤訊息。異常階層簡化了錯誤處理,並且極大地降低了需要編寫的異常代碼數量(例如開啟和關閉串連)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常階層。 Spring ORM:Spring 架構插入了若干個 ORM 架構,從而提供了 ORM 的對象關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常階層。 Spring Web 模組:網路內容模組建立在應用程式上下文模組之上,為基於 Web 的應用程式提供了上下文。所以,Spring 架構支援與 Jakarta Struts 的整合。Web 模組還簡化了處理多部分請求以及將請求參數綁定到域對象的工作。 Spring MVC 架構:MVC 架構是一個全功能的構建 Web 應用程式的 MVC 實現。通過策略介面,MVC 架構變成為高度可配置的,MVC 容納了大量視圖技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 架構的功能可以用在任何 J2EE 伺服器中,大多數功能也適用於不受管理的環境。Spring 的核心要點是:支援不綁定到特定 J2EE 服務的可重用業務和Data Access Objects。毫無疑問,這樣的對象可以在不同 J2EE 環境 (Web 或 EJB)、獨立應用程式、測試環境之間重用。

三、核心思想

  Spring的核心思想是IoC和AOP。

   1.Ioc

     Ioc全稱Inversion of Control,也可以稱為控制反轉

     – 所謂控制反轉就是 應用本身不負責 依賴對象的建立及維護,依賴對象的建立及維護是由外部容器負責 的, 這 樣控制權就由應用轉移到了外部容器,控制權的轉移就是所謂反轉 。     說到Ioc,還要提一個概念DI,全稱Dependency Injection,也可以稱為依賴注入 –所謂依賴注入就是指:在運行期,由外部容器動態地將依賴對象注入到組件中。      具體含義是:當某個角色(可能是一個Java執行個體,調用者)需要另一個角色(另一個Java執行個體,被調用者)的協助時,在傳統的程式設計過程中,通常由調用者來建立被調用者的執行個體。但在Spring裡,建立被調用者的工作不再由調用者來完成,因此稱為控制反轉;建立被調用者 執行個體的工作通常由Spring容器來完成,然後注入調用者,因此也稱為依賴注入。 由此可以看出,DI和IoC其實是指同一個概念。 Spring依賴注入有兩種實現方式,一是通過構造方法,二是通過setter方法。 方式一:

方式二:

2.AOP AOP是Aspect Oriented Programming的縮寫,也可以稱為面向切面編程(也叫面向方面編程),是對OOP(面向方面編程)的有益補充。 AOP將應用系統分為兩部分,核心商務邏輯及橫向的通用邏輯,也就是所謂的方面,借住這一思想可以通過減少代碼重複模組從而協助開放人員提供工作效率。 •AOP相關概念 Aspect(切面):指橫切性關注點的抽象即為切面,它與類相似,只是兩者的關注點不一樣,類是對物體特徵的抽象,而切面橫切性關注點的抽象 joinpoint ( 連接點 ): 所謂連接點是指那些被攔截到的點。在 spring 中 , 這些點指的是方法 , 因為 spring 只支援方法類型的連接點 , 實際上 joinpoint 還可以是 field 或類構造器 ) Pointcut ( 切入點 ): 所謂切入點是指我們要對那些 joinpoint 進行攔截的定義 . Advice ( 通知 ): 所謂通知是指攔截到 joinpoint 之後所要做的事情就是通知 . 通知分為前置通知 , 後置通知 , 異常通知 , 最終通知 , 環繞 通知 Target( 目標對象 ): 代理的目標 對象即被代理的對象 Weave(織入):指將aspects應用到target對象並導致proxy對象建立的過程稱為織入 Introduction( 引入 ): 在不修改類代碼的前提下 ,Introduction 可以在運行期為類動態地添加一些方法或 Field. • Advice 類型: – 前置通知( Before advice ) : 在某連接點(joinpoint)之前執行的通知,但這個通知不能阻止連接點前的執行(除非它拋出一個異常) – 返回後通知( After returning advice ) : 在 某連接點( joinpoint )正常完成後執行的通知:例如,一個方法沒有拋出任何異常,正常返回。 拋出異常後通知( After throwing advice ) :   在方法拋出異常退出時執行的通知。  – 後通知( After (finally) advice ) : • 當某連接點退出的時候執行的通知(不論是正常返回還是異常退出)。 -環繞通知(Around Advice): 包圍一個連接點(joinpoint)的通知,如方法調用。這是最強大的一種通知類型。環繞通知可以在方法調用前後完成自訂的行為。它也會選擇是否繼續執行連接點或直接返回它們自己的傳回值或拋出異常來結束執行。 •Spring預設使用JDK動態代理實現AOP代理。這使得任何介面或 介面的集合能夠被代理 •Spring也可以用CGLIB代理。這是代理類,而不是介面。如果業務對象沒有實現一個介面,CGLIB被預設使用。 • Spring AOP 編程的切面可以採用以下兩種聲明方式 – 基於 xml 的聲明方式 – 基於 @ Aspectj 註解的聲明方式 下面以xml方式的為例,
設定檔如下:
四、Spring Context context 的基礎是 ApplicationContext 介面,它繼承 BeanFactory 介面,並提供BeanFactory 所有的功能。 Spring中的幾種容器都支援使用xml裝配bean,包括: 
    XmlBeanFactory , 
    ClassPathXmlApplicationContext , 
    FileSystemXmlApplicationContext , 
    XmlWebApplicationContext 
載入這些容器的設定檔的xml有一下幾種常見的方法: 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.