Spring學習(十二)Spring 的配置檔案概述
阿新 • • 發佈:2019-01-01
我們應該怎麼理解和認識Spring的配置檔案呢?
其實,Spring的配置檔案是Spring容器對Bean進行生產以及關係注入的圖紙,他是Spring的基礎。如果我們沒有配置檔案的話,則Spring的容器將無從談起。
Spring 的配置檔案是用於指導 Spring 工廠進行 Bean 的生產、依賴關係注入及 Bean 例項分發的“圖紙”, J2EE 程式設計師必須學會並靈活應用這份“圖紙”,準確地表達自己的“生產意圖”。它是一個或多個標準的XML文件,其ApplicationContext.xml是Spring的預設配置檔案,當容器啟動時找不到其他的配置檔案時,則會嘗試載入這個預設的配置檔案。
Spring容器成功啟動需要以下三方面的條件同時具備:
Spring-Module.xml位於module資料夾下
傳統載入方式:
- Spring的類包必須已經放在Spring的類容器下面
- 應用程式應當為Spring提供完備的Bean的配置資訊
- Bean的類都已經放在Spring的類容器下面
- Bean的實現類
- Bean的屬性資訊 比如:資料來源的連線數,使用者名稱和密碼等等。
- Bean的依賴關係
- Bean的行為配置 比如:生命週期範圍以及生命週期各個過程的回撥函式等
- Bean的建立方式定義 主要說明是通過構造器還是工廠方法來構造Bean
接下來是他們之間的相互關係:
- 在配置檔案中使用import來匯入所需的配置檔案。
- 將多個配置檔案構造為一個數組,然後傳遞給ApplicationContext實現載入多個配置檔案。
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]
{"Spring-Common.xml","Spring-Connection.xml","Spring-ModuleA.xml"});
但是這種方法不宜組織,且不宜維護。
則我們使用整合配置檔案:Spring-All-Module.xml
<beans .....>
<import resource="common/Spring-Common.xml"/>
<import resource="connection/Spring-Connection.xml"/>
<import resource="module/Spring-Module.xml"/>
</beans>
在檔案當中使用import直接將其他的配置檔案匯入到這個檔案當中就好了。
整合後加載方式:
ApplicationContext context = new ClassPathXmlApplicationContext(“Spring-All-Module.xml”);
可以看到配置檔案是整個Spring專案的靈魂,我們先來看一下Spring配置檔案的一般結構:<beans>//Bean定義的開始和結束
<import resource=“resource1.xml” />//匯入其他配置檔案Bean的定義
<import resource=“resource2.xml” />
<bean id=“bean1” class=“***”></bean>
<bean name=“bean2” class=“***”></bean>
<alias alias=“bean3” name=“bean2” />//alias用於定義Bean的別名
</beans>
可以看到一個簡單的Spring配置檔案就是這樣。
其中:
- Import標籤可以放在Beans標籤下的任何位置,沒有順序關係。
- bean3和bean2是同一個Bean,bean3是bean2的別名。
<?xml version="1.0" encoding="UTF-8" ?>
<beans
<!--標準名稱空間-->
xmlns="http://www.springframework.org/schema/beans"
<!--xsi標準名稱空間,用於指定自定義名稱空間的Schema檔案-->
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<!—aop表示自定義名稱空間,aop是該名稱空間的簡稱,而後面是名稱空間的全稱。必須在xsi名稱空間為其指定的名稱空間對應的Schema檔案-->
xmlns:aop="http://www.springframework.org/schema/aop"
<!—下面這四行程式碼,是為每個名稱空間指定具體的schema檔案-->
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/context/spring-aop-3.0.xsd">
<!—預設名稱空間的配置 -->
<bean id = "app" class="cn.lovepi.App" />
<!—aop名稱空間的配置 -->
<aop:config>
<aop:pointcut id="mycut" expression="execution(* cn.love*(..))"/>
</aop:config>
</beans>
注:
Xml Schema:Schema在文件根節點中通過xmlns對文件當中的名稱空間進行命名。
我們在上面的程式碼中定義了三個名稱空間,
- 首先我們定義了一個預設名稱空間,他沒有空間名,用於Spring Bean的定義。
- 接下來我們命名了一個xsi名稱空間,這個名稱空間用於為每個文件中名稱空間指定相對應的schema的樣式檔案。是標準組織定義的標準名稱空間。
- 我們還命名了一個aop的名稱空間,這個名稱空間是Spring配置aop的名稱空間,是使用者自定義的名稱空間。
- 指定名稱空間的名稱,需要指定名稱空間的縮類名和全名
- 指定名稱空間的schema文件樣式檔案的位置,用空格或回車行來進行分割。
- xml解析器可以獲取schema檔案,並對文件進行格式合法性驗證
- 在開發環境下,IDE可以用schema檔案來對文件編輯器進行誘導功能。
- spring-beans-3.0.xsd:Spring3.0最主要的配置檔案,主要是用於配置Bean
- spring-aop-3.0.xsd:aop配置定義的schema
- spring-tx-3.0.xsd:宣告式事物配置定義的Schema
- spring-mvc-3.0.xsd:Spring3.0當中新增的
- spring-util-3.0.xsd:是為簡化某些複雜的標準配置而提供的Schema
- spring-jee-3.0.xsd:是為簡化J2EE中EJB等功能的配置而提供的Schema
- spring-jdbc-3.0.xsd:為Spring內接資料庫而提供的Schema,3.0新增
- spring-jms-3.0.xsd:jms配置的Schema
- spring-lang-3.0.xsd:增加了對動態語言的支援,為整合動態語言而定義
- spring-oxm-3.0.xsd:配置物件xml對映到schema,3.0新增
- spring-task-3.0.xsd:任務排程的Schema
- spring-tool-3.0.xsd:為整合Schema一些有用工具而提供的Schema