1. 程式人生 > >javaweb學習(三):applicationContext.xml文件解析,配置等詳解

javaweb學習(三):applicationContext.xml文件解析,配置等詳解

applicationContext.xml是Spring的配置檔案,當然可以不用這個名稱,在載入的時候指定即可,不過為了減少必要的報錯,建議初期還是使用這個名稱吧,畢竟這是spring預設的名稱。
一、applicationContext.xml作用:
我們學Spring的主要目的還是因為Spring能充當我們容器管理的作用,這個作用主要體現在:
控制反轉: Spring通過控制反轉實現了鬆散耦合,物件們給出它們的依賴,而不是建立或查詢依賴的物件們。
面向切面的程式設計(AOP): Spring支援面向切面的程式設計,並且把應用業務邏輯和系統服務分開。
容器: Spring 包含並管理應用中物件的生命週期和配置。
MVC框架: Spring的WEB框架是個精心設計的框架,是Web框架的一個很好的替代品。
事務管理: Spring 提供一個持續的事務管理介面,可以擴充套件到上至本地事務下至全域性事務(JTA)。
異常處理: Spring 提供方便的API把具體技術相關的異常(比如由JDBC,Hibernate or JDO丟擲的)轉化為一致的unchecked 異常。
這裡不詳細講解Spring框架,但作用大概就這幾個,當然還有管理各類ORM框架等,不在這裡討論。
由於applicationContext.xml檔案 Spring的配置檔案,所以applicationContext.xml的作用當然就是用來配置Spring框架所需的資訊了。

二、applicationContext.xml典型檔案內容:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.2.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
     <!-- 配置元件掃描器,使用註解方式開發,不用配置dao和service -->
      <!-- 在springmvc.xml檔案中也可以配置這個屬性 -->  
     <context:component-scan base-package="com.edu.test"/><!--這篇文章先不說掃描注入-->
      
      <!--依賴注入->
      <bean id=”helloworld” class=”com.dh.spring.HelloWorld” singleton=”true” depends-on=”date” lazy-init=”false” init-mathod=”init” destory-method=”destory”/>
    <!-- 資料來源 -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/test" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>
    
    <!-- 配置session工廠 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>
    
    <!-- 事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    <!-- 配置AOP通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
         <!-- 配置事務屬性 -->
         <tx:attributes>
             <!-- 新增事務管理的方法 -->
             <tx:method name="save*" propagation="REQUIRED"/>
             <tx:method name="delete*" propagation="REQUIRED"/>
             <tx:method name="update*" propagation="REQUIRED"/>
             <tx:method name="select*" read-only="true"/>
         </tx:attributes>
     </tx:advice>
     
     <!-- 配置AOP,為新增事務管理的操作配置AOP -->
    <aop:config>
        <!-- 引入的Spring定義的事務通知,需要使用aop:advisor -->
        <!-- 下面難 -->
        <aop:advisor advice-ref="txAdvice"
            pointcut="execution(* com.edu.test.service.*.*(..))"
        />
    </aop:config>
</beans>

三、配置內容詳解:

  1. beans:
    applicationContext.xml檔案的根元素,所有的內容都需要包含在beans的標籤中。

  2. xmlns:
    這是xml namespace即xml名稱空間的簡稱,主要用於引入一些.xsd檔案(也就是說xmlns後面的連線就是連線到相應的.xsd檔案網站的,.xsd檔案裡面有特定的配置,比如xmlns:aop="http://www.springframework.org/schema/aop"就是載入aop切面的),xmlns冒號後面的是這個.xsd的字首,如果後續使用的時候,直接就<aop: 如aop:config即可。這是xml namespace即xml名稱空間的簡稱,主要用於引入一些.xsd檔案(也就是說xmlns後面的連線就是連線到相應的.xsd檔案網站的,.xsd檔案裡面有特定的配置,比如xmlns:aop="

    http://www.springframework.org/schema/aop"就是載入aop切面的),xmlns冒號後面的是這個.xsd的字首,如果後續使用的時候,直接就<aop: 如aop:config即可。

  3. xsi:schemaLocation:
    其中xsi是xmlns:xsi中的xsi,schemaLocation是http://www.w3.org/2001/XMLSchema-instance中的一個屬性(瞭解即可,不需要深入),這個xsi:schemaLocation的作用就是幫你定位到對應的.xsd檔案的。

  4. bean標籤:

▶id屬性:用於指定Bean的名稱,在Bean被依賴時使用,在獲取Bean時使用等

▶name屬性:用於指定Bean的別名

▶class屬性:用於指定Bean的來源,即建立要建立的Bean的class類(需要全限定名)

▶singleton屬性:用於指定當前Bean的建立模式,若值為true表示為單例模式,false表示原型模式(prototype)

▶depends-on屬性:用於指定當前Bean的依賴Bean,強制指定的Bean在當前Bean初始化之前先完成初始化

▶init-method屬性:用於指定當前Bean的初始化方法,在Bean例項建立好後,首先會呼叫其指定名稱的方法

▶destory-method屬性:用於指定當前Bean的銷燬方法,在Bean即將被銷燬之前會自動呼叫該屬性指定的方法

▶lazy-init屬性:用於指定當前Bean的初始化時間,若值為true表示在初次呼叫時才會自動建立例項並初始化,false表示在IoC容器建立的時候就會完成建立和初始化

▶autowire屬性:用於指定當前Bean的依賴關係的自動注入方式,其有五個值:

▷byName值:表示通過id名稱來自動匹配;

▷byType值:表示通過class指定的型別來自動裝配;

▷constructor值:表示使用建構函式的引數進行自動裝配(引數的型別匹配);

▷autodetect值:表示自動進行選擇匹配方式,首先進行constructor自動裝配,若不存在構造方法則使用byType方式進行自動裝配;

▷no值:表示不適用自動裝配。

▶dependency-check屬性:用於指定Bean的依賴檢查模式,檢查依賴關係是否完整,與自動裝配合用,其有四個值:

▷simple值:表示針對基本型別、字串、集合進行依賴檢查

▷object值:表示對引用物件進行依賴檢查

▷all值:表示對基本型別、字串、集合、引用物件全部進行依賴檢查

▷none值:表示不進行任何依賴檢查,預設情況。

  1. property標籤

▶name屬性:用於指定屬性的名稱,與類中的set方法後方的名稱一致

▶value屬性:用於指定該屬性的值,用於指定的值是基本型別、字串型別

▶ref屬性:用於指定該屬性的值,用於指定的值是引用物件型別(即其他的Bean),ref後面的值為另一個Bean的id

▶value標籤:用於指定屬性的值,型別為基本型別、字串型別,值為標籤內的文字內容,可以使用null值將屬性的值設定為null

至此,applicationContext.xml文件的各個標籤差不多這樣了,更深入的配置,如list,map等,這些後續整合的時候,再順便寫一下