Spring框架自學之路(一)

    代碼不是看出來的,而是敲出來的,歡迎關注公衆號【禿頭程序員】,收藏教程

步驟一:框架概述

    所謂的框架其實就是程序的架子,在這個程序的架子中,搭建起程序的基本的骨架,針對程序的通用問題給出了便捷的解決方案,可以使開發人員 基於框架快速開發具體的應用程序。

     常見的框架:

  • SSH(Struts2+Spring+Hibernate)

  • SSM(SpringMVC+Spring+MyBatis)

    Spring是一個Service層的框架,可以整合許多其它框架進行工作。Spring的主要技術是 IOC(DI) AOP。IOC - 控制反轉(依賴注入)。AOP - 面向切面編程。

步驟二:爲MyEclipse配置Spring的約束

    Spring本身是基於xml配置來工作的,在使用Spring的過程中不可避免的要編寫大量xml配置,Spring官方提供了這些xml文件的編寫規範,這是通過提供xml的約束文件來實現的。

    所謂的xml的約束其實是一種限定xml文件寫法的技術,主要分爲兩種:

  • DTD,通常文件的後綴.dtd

  • Schema,通常文件的後綴爲.xsd

    Spring提供了Schema格式的約束,來限定Spring配置文件的寫法。開發人員可以通過閱讀Spring提供的約束文件來了解Sprinig的xml配置的寫法。但是這個過程比較麻煩,通常我們會將約束文件交給開發工具管理,開發工具可以通過解析約束文件瞭解xml的寫法,並在需要時爲開發者提供標籤提示。

a. 將Spring的約束文件交給MyEclipse管理:

    1) 將spring的壓縮包解壓一份放置到到一個固定目錄中,要注意的是路徑中不可以有中文或空格。

    2) 打開MyEclipse的/window/preferences,配置其中的XML Catalog

    3) 點擊Add按鈕,在新彈出的選項卡中選擇剛解壓的Spring目錄下schema目錄中想要導入的.xsd文件,並且設定好名稱空間,通常就是在自動識別的名稱空間之加上/文件名,點擊確定就可以使MyEclipse管理該約束文件了。

b. 通過xml約束文件自動生成符合約束格式的xml:

    1) 新建xml文件,選擇BasicTemplates方式

    2) 設定模板

    3) 選擇通過schema文件創建一個xml

    4) 選擇之前導入的 schema文件

    5) 指定根標籤,及標籤前綴,通常可以將前綴置爲空,方便後續使用 

 

    6) 確定之後即可產生符合格式的xml

c. 配置xml模版,用來快速生成xml:

    1) 在MyEclipse的window/preferences中配置新模版

    2) 設定模版

    3) 使用模版,在xml文件中輸入模版名稱,可以通過自動提示插入模版內容

步驟三:Spring IOC

1. IOC(DI) - 控制反轉(依賴注入)

    所謂的IOC稱之爲控制反轉,簡單來說就是將對象的創建的權利及對象的生命週期的管理過程交由Spring框架來處理,從此在開發過程中不再需要關注對象的創建和生命週期的管理,而是在需要時由Spring框架提供,這個由spring框架管理對象創建和生命週期的機制稱之爲控制反轉。而在 創建對象的過程中Spring可以依據配置對對象的屬性進行設置,這個過稱之爲依賴注入,也即DI。

2.IOC的入門案例

  • 下載Spring

    訪問Spring官網,下載Spring相關的包

  • 解壓下載好的壓縮包

    其中包含着Spring的依賴包

  • 創建一個java項目

    spring並不是非要在javaweb環境下才可以使用,一個普通的java程序中也可以使用Spring。

  • 導入Spring的libs目錄下IOC相關的jar包

  • 創建Spring的配置文件

    Spring採用xml文件作爲配置文件,xml文件名字任意,但通常都取名爲applicationContext.xml,通常將該文件放置在類加載的目錄裏下(src目錄),方便後續使用。

  • 創建bean類,並在spring中進行配置交由spring來管理

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">        <bean id="person" class="cn.tedu.beans.Person"></bean></beans>
  • 在程序中通過Spring容器獲取對象並使用

public class Person_Test {        @Test        /**         * SpringIOC的入門案例         */        public void  test1(){                ApplicationContext context =                                 new ClassPathXmlApplicationContext("applicationContext.xml");                Person p = (Person) context.getBean("person");                p.say();        }}

3.IOC的實現原理

    在初始化一個Spring容器時,Spring會去解析指定的xml文件,當解析到其中的<bean>標籤時,會根據該標籤中的class屬性指定的類的全路徑名,通過反射創建該類的對象,並將該對象存入內置的Map中管理。其中鍵就是該標籤的id值,值就是該對象。

    之後,當通過getBean方法來從容器中獲取對象時,其實就是根據傳入的條件在內置的Map中尋找是否有匹配的鍵值,如果有則將該鍵值對中保存的對象返回,如果沒有匹配到則拋出異常。

     由此可以推測而知:

    默認情況下,多次獲取同一個id的bean,得到的將是同一個對象。

即使 是同一個類,如果配置過多個<bean>標籤具有不同的id,每個id都會在內置Map中有一個鍵值對,其中的值是這個類創建的不同的對象

同一個<beans>標籤下不允許配置多個同id的<bean>標籤,如果配置則啓動拋異常

關注公衆號【禿頭程序員】,不錯過Spring框架自學之路(二)

(原創文章文字圖片禁止轉載,禁止用於商業用途,轉載公衆號請後臺留言申請。圖文部分來自網絡,若有侵權,請聯繫刪除)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章