關於spring的配置檔案總結
spring比較龐大,很多功能實現依賴配置檔案,比較繁瑣的配置檔案確實比較頭疼,這裡通過查閱,上網等方法總結了關於spring配置檔案的內容,如果有不全或者失誤之處希望大家多多指正。
<beans 這裡是配置檔案的根節點,所有配置在beans中,內可以包含多個bean
xmlns=http://www.springframework.org/schema/beans
xmlns:是XML NameSpace的縮寫,因為XML檔案的標籤名稱都是自定義的,自己寫的和其他人定義的標籤很有可能會重複命名,而功能卻不一樣,所以需要加上一個namespace來區分這個xml檔案和其他的xml檔案,類似於Java中的package。
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsi: 是指xml檔案遵守xml規範,xsi全名:xml schema instance,是指具體用到的schema資原始檔裡定義的元素所準守的規範。即http://www.w3.org/2001/XMLSchema-instance這個檔案裡定義的元素遵守什麼標準
上面兩個是最基本的名稱空間,必不可少的
xmlns:p=http://www.springframework.org/schema/p
xmlns:p:工程中為了簡化配置,使用p標籤時,就需要開啟這個名稱空間,開啟後才能識別p標籤的配置
如:使用p標籤前的配置:
<bean name=" classicBean"class="com.example.TestBean">
<property name="email" value="577@qq.com"/>
</bean>
使用p標籤簡化後:
<bean name=" p-namespaceBean"class="com.example.TestBean" p:email="577@qq.com"/>
xmlns:aop=http://www.springframework.org/schema/aop
xmlns:aop:啟用AOP功能時的名稱空間,使用切面等都要用到,spring的核心之一,一般情況都會啟動的名稱空間
常用到的spring的宣告通知:
前置通知:<aop:before>
後置通知:<aop:after-returning>
異常通知:<aop:after-throwing>
最終通知:<aop:after>
環繞通知:<aop:around>
關於前後置常用通知的具體細節,以前部落格中有介紹:
http://blog.csdn.net/weixin_36380516/article/details/72551678
xmlns:tx=http://www.springframework.org/schema/tx
xmlns:tx:啟動宣告式事務時的名稱空間
xmlns:c=http://www.springframework.org/schema/c
xmlns:c:和p標籤一樣,都是為了簡化spring的配置的,使用c標籤時要開啟這個空間,使c標籤能夠識別
比如:傳統配置方法:
<bean id="bar"class="x.y.Bar"/>
<bean id="baz"class="x.y.Baz"/>
<bean id="foo"class="x.y.Foo">
<constructor-arg ref="bar"/>
<constructor-arg ref="baz"/>
<constructor-arg value="577@qq.com />
</bean>
使用c標籤後:
<bean id="bar"class="x.y.Bar"/>
<bean id="baz"class="x.y.Baz"/>
<bean id="foo"class="x.y.Foo" c:bar-ref="bar" c:baz-ref="baz"c:email="577@qq.com "/>
xmlns:cache=http://www.springframework.org/schema/cache
xmlns:cache:開啟快取標註空間,Spring框架提供了大量的快取相關的標註,在應用中通過使用這些快取標註實現快取。要使用快取標註,首先需要配置開啟快取標註空間。
開啟後在應用中就可以引用Spring框架的快取標註,如:
@Cacheable("a_cache_name"),作用於被緩衝的方法,對方法執行結果的快取
@CacheEvict,作用於被緩衝的方法,將方法執行的結果從快取中移除
@CachePut,更新快取
@Caching,將作用於一個方法的多個快取操作打包為一個整體
@CacheConfig,作用於Java類,設定通用的快取相關引數
xmlns:util=http://www.springframework.org/schema/util
xmlns:util:意思是開啟util空間,util標籤可以進行簡化操作,使用<util:list>、<util:map>、<util:set>、<util:properties>等標籤,用它來取代ListFactoryBean、MapFactoryBean、SetFactoryBean、PropertiesFactoryBean。
用它來取代ListFactoryBean、MapFactoryBean、SetFactoryBean、PropertiesFactoryBean。
如:使用<util:property-path>標籤為某個Bean的屬性成員設定id屬性,使之在容器管理中,而不必設定org.springframework.beans.factory.config.PropertyPathFactoryBean
<util:property-path id="PI"
path="user.pi"/>
id值設定為PI的Bean,其值將會是user.pi
xmlns:task=http://www.springframework.org/schema/task
xmlns:task:開啟配置定時器空間,spring框架提供了對定時器的支援,通過配置檔案就可以很好的實現定時器,只需要應用啟動,就自動啟動定時器。
關於spring中定時器的使用,上一篇部落格有介紹:
http://blog.csdn.net/weixin_36380516/article/details/72596834
xmlns:oxm=http://www.springframework.org/schema/oxm
xmlns:oxm:開啟OXM進行物件XML對映的空間,Spring OXM對主流O/X Mapping框架做了一個統一的抽象和封裝,Marshaller和Unmarshaller是Spring OXM兩個核心介面。Marshaller用於將物件轉成XML,Unmarshaller用於將XML轉成物件。
xmlns:mvc=http://www.springframework.org/schema/mvc
xmlns:mvc:當使用springMVC開發Web專案時,就要開啟這個名稱空間
xmlns:lang=http://www.springframework.org/schema/lang
xmlns:lang :lang用來將那些已經被定義在一些動態語言(例如Jruby和Groovy)中的物件作為beans中的物件存放到spring容器中。展示還沒有用到過。。
xmlns:jms=http://www.springframework.org/schema/jms
xmlns:jms:spring整合jms時需要開啟的空間,是spring對jms的封裝,用來簡化非同步接收訊息的程式碼。官方文件:
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/core/JmsTemplate.html
xmlns:jee=http://www.springframework.org/schema/jee
xmlns:jee :開啟jee標籤空間,jee標籤用來處理javaee標準相關的問題,例如查詢一個jndi物件以及定義一個ejb的引用等。
一般使用org.springframework.jndi.JndiObjectFactoryBean方法配置datasource資料來源的時候開啟這個名稱空間。
xmlns:jdbc=http://www.springframework.org/schema/jdbc
xmlns:jdbc:開啟jdbc的名稱空間,之後配置檔案中可以使用jdbc標籤了,例如:
配置<jdbc:initialize-database>標籤,在spring工程啟動時,去執行一些sql,也就是初始化資料庫。比如向資料庫中建立一些表及插入一些初始資料等。sql的路徑需要在其子標籤jdbc:script中去指定。
xmlns:context=http://www.springframework.org/schema/context
xmlns:context:開啟上下文標籤,可以用來為spring配置檔案引入其他地方的配置,如,最常見的呼叫資料庫配置db.properties檔案:
<context:property-placeholderlocation="classpath:db.properties"/>
xsi:schemaLocation="http://www.springframework.org/schema/oxm
xsi:schemaLocation:是指本文件裡的xml元素所遵守的規範,這些規範都是由官方制定的,可以進你寫的網址裡面看版本的變動。xsd的網址還可以幫助你判斷使用的程式碼是否合法。
下面根據一份applicationContext.xml檔案,說明每一步配置的作用:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm-4.1.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.1.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache-4.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/lang
http://www.springframework.org/schema/lang/spring-lang-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 資料庫資訊資料來源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!-- 指定連線資料庫的驅動 -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver">
</property>
<!-- 連線資料庫的url -->
<property name="url" value="jdbc:oracle:thin:@localhost:1521:dalin">
</property>
<!-- 使用者名稱密碼 -->
<property name="username" value="ssh"></property>
<property name="password" value="123"></property>
<!-- 設定資料庫連線池的最大連線數 -->
<property name="maxPoolSize">
<value>20</value>
</property>
<!-- 設定資料庫連線池的最小連線數 -->
<property name="minPoolSize">
<value>2</value>
</property>
<!-- 設定資料庫連線池的初始化連線數 -->
<property name="initialPoolSize">
<value>2</value>
</property>
<!-- 設定資料庫連線池的連線的最大空閒時間,單位為秒 -->
<property name="maxIdleTime">
<value>10</value>
</property>
</bean>
<!-- 定義sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 注入資料來源 -->
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<!-- <prop key="hibernate.show_sql">true</prop> -->
</props>
</property>
<!-- hibernate的對映檔案,這個自動生成,一般不改動 -->
<property name="mappingResources">
<list>
<value>org/jvsun/pojo/Buy.hbm.xml</value>
<value>org/jvsun/pojo/BuyDetail.hbm.xml</value>
</list>
</property></bean>
<!-- 採購單配置開始 -->
<bean id="BuyAction" class="org.jvsun.action.BuyAction">
<property name="services" ref="BuyServices"></property>
</bean>
<bean id="BuyServices" class="org.jvsun.services.impl.BuyServicesImpl">
<property name="dao" ref="BuyDAO"></property>
</bean>
<bean id="BuyDAO" class="org.jvsun.dao.impl.BuyDAOImpl">
<property name="sessionFactoy" ref="sessionFactory"></property>
</bean>
<!-- 採購單配置結束 -->
<!-- 定義使用的事務管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 定義需要進行事務攔截的方法及所採用的事務控制型別 -->
<!--propagation="REQUIRED",事務的衍生方式為必需,即事務的傳播方式。有則用現成事務無則建立新的-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="do*" propagation="REQUIRED" />
<tx:method name="find*" propagation="REQUIRED" />
<!-- 這表明僅對do和find開頭的方法進行事務控制,REQUIRED宣告這些如果當前沒有事務就去建立一個新的,如果有的話就用當前事務 -->
</tx:attributes>
</tx:advice>
<!-- 宣告一個切入點 -->
<aop:config>
<aop:pointcut id="productServiceMethods"
expression="execution(* org.jvsun.services.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="productServiceMethods" />
</aop:config>
<!--
execution切入點指示符 ,用法稍後說
-->
<!-- 宣告支援事務註解的(@Transactional) -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
切入點表示式說明:
execution切入點指示符
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
除了返回型別模式(上面程式碼片斷中的ret-type-pattern),名字模式和引數模式以外, 所有的部分都是可選的
引數模式稍微有點複雜:
1,()匹配了一個不接受任何引數的方法
2,(..)匹配了一個接受任意數量引數的方法(零或者更多)
3,模式(*)匹配了一個接受一個任何型別的引數的方法
4,模式(*,String)匹配了一個接受兩個引數的方法,第一個可以是任意型別, 第二個則必須是String型別
例如:
任意公共方法的執行:
execution(public * *(..))
任何一個名字以“set”開始的方法的執行:
execution(* set*(..))
AccountService介面定義的任意方法的執行:
execution(* com.xyz.service.AccountService.*(..))
在service包中定義的任意方法的執行:
execution(* com.xyz.service.*.*(..))
在service包或其子包中定義的任意方法的執行:
execution(* com.xyz.service..*.*(..))
大概就這麼多了,歡迎大家補充。
相關文章
- Spring Boot 配置檔案總結Spring Boot
- 關於控制檔案的總結
- Android 關於 so 檔案的總結Android
- sqlserver關於filestream檔案流、filetable檔案表的總結SQLServer
- 關於jboss配置的總結
- Spring學習總結(24)——Spring配置檔案載入路徑總結Spring
- mysql關於db.opt檔案的總結MySql
- MyBatis配置檔案總結MyBatis
- my.cnf檔案關於組選項的總結
- 結合SpEL使用@Value-基於配置檔案或非配置的檔案的值注入-Spring BootSpring Boot
- spring boot配置檔案相關Spring Boot
- ASM的優點總結--關於日誌檔案調整ASM
- 關於EM配置的一些總結
- 關於 Pentaho 的配置檔案 pentaho.xmlXML
- 5、關於tnsname.ora檔案的配置
- 12C關於CDB、PDB 日誌檔案redo log的總結
- 關於Spring的這15點總結,打死都要會。Spring
- 關於近期的總結
- 關於UIWebView的總結UIWebView
- 關於BeautifulSoup的總結
- 關於HTML的總結HTML
- 請教一下banq大大,關於SPRING配置檔案格式出錯Spring
- 關於oracle閃回資料歸檔的總結Oracle
- Spring Boot 配置檔案Spring Boot
- Spring檔案最全配置Spring
- 關於配置檔案中的預設值的問題
- 關於開發Python專案的心得總結!Python
- C# Log4net配置檔案 總結C#
- sqlserver關於always on的總結SQLServer
- mysql關於variable的總結MySql
- ORACLE關於NULL的總結OracleNull
- 關於ORACLE鎖的總結Oracle
- Spring Boot @PropertySource 載入指定配置檔案、@ImportResource 匯入Spring 配置檔案Spring BootImport
- Spring - 配置檔案中的特殊字元Spring字元
- spring 載入配置檔案的方式Spring
- spring和Mybatis的核心配置檔案SpringMyBatis
- Spring Boot的配置檔案管理技巧Spring Boot
- rabbitMQ-Spring配置檔案MQSpring