Spring的一些配置文件的使用

1 Spring 加載配置文件的方法java

方法1:web

<web-app>
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/applicationContext-*.xml</param-value>
   </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>
</web-app>

方法2:spring

<web-app>
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/applicationContext-*.xml</param-value>
   </context-param>
   <servlet>
      <servlet-name>SpringContextServlet</servlet-name>
      <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
</web-app>

方法3:strut配置文件數據庫

 <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
        <set-property property="contextConfigLocation" 
            value="/WEB-INF/applicationContext.xml,
                   /WEB-INF/action-servlet.xml"/>
 </plug-in>

這種方式實際上是依賴前面兩種方式的,這裏是以插件的方式自動加載action-servlet.xml還有webApplicationContext裏面的bean。apache

參考文檔:緩存

http://weijie.blog.51cto.com/340746/66502
app

2 spring 配置dbcp數據源的方法
性能

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driver">
      <value>${db.driver}</value>  
   </property>
    <property name="url">
      <value>${db.url}</value>  
   </property>
    <property name="username">
      <value>${db.username}</value>  
   </property>
    <property name="password">
      <value>${db.password}</value>  
   </property>
</bean>

也可使用spring下的DriverManagerDataSource測試

DriverManagerDataSouce dataSource=new DriverManagerDataSouce();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPAssword(password);

下面是配置其餘數據源的方法:ui

 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
  <property name="url"><value>${jdbc.url}</value></property>
  <property name="username"><value>${jdbc.username}</value></property>
  <property name="password"><value>${jdbc.password}</value></property>
 </bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
 <property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
    <property name="url"><value>${jdbc.url}</value></property>
    <property name="username"><value>${jdbc.username}</value></property>
    <property name="password"><value>${jdbc.password}</value></property>
    <property name="maxActive"><value>80</value></property>  
    <property name="maxIdle"><value>20</value></property>  
    <property name="maxWait"><value>3000</value></property>  
</bean>

 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass"><value>${jdbc.driverClassName}</value></property>
        <property name="jdbcUrl"><value>${jdbc.url}</value></property>
        <property name="user"><value>${jdbc.username}</value></property>
        <property name="password"><value>${jdbc.password}</value></property>  
        <property name="acquireIncrement"><value>5</value></property>
        <property name="idleConnectionTestPeriod"><value>3000</value></property>
        <property name="checkoutTimeout"><value>3000</value></property>
        <property name="maxPoolSize"><value>80</value></property>
        <property name="minPoolSize"><value>1</value></property>
        <property name="maxStatements"><value>6000</value></property>
        <property name="initialPoolSize"><value>5</value></property>
 </bean>

 <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
  <property name="driver"><value>${jdbc.driverClassName}</value></property>
  <property name="driverUrl"><value>${jdbc.url}</value></property>
  <property name="user"><value>${jdbc.username}</value></property>
  <property name="password"><value>${jdbc.password}</value></property>
  <property name="alias"><value>test</value></property>
  <property name="houseKeepingSleepTime"><value>90000</value></property>
  <property name="prototypeCount"><value>10</value></property>
  <property name="maximumConnectionCount"><value>100</value></property>
  <property name="minimumConnectionCount"><value>10</value></property>
  <property name="trace"><value>true</value></property>
  <property name="verbose"><value>true</value></property>
 </bean>

其中幾個參數說明以下:

maxIdleTime:最大空閒時間,60秒內未使用則鏈接被丟棄。若爲0則永不丟棄。Default: 0 

acquireIncrement:當鏈接池中的鏈接耗盡的時候c3p0一次同時獲取的鏈接數。Default: 3 

maxStatements:JDBC的標準參數,用以控制數據源內加載的PreparedStatements數量。但因爲預緩存的statements屬於單個connection而不是整個鏈接池。因此設置這個參數須要考慮到多方面的因素。若是maxStatements與maxStatementsPerConnection均爲0,則緩存被關閉。Default: 0

idleConnectionTestPeriod:每60秒檢查全部鏈接池中的空閒鏈接。Default: 0 

acquireRetryAttempts: 定義在從數據庫獲取新鏈接失敗後重復嘗試的次數。Default: 30 

breakAfterAcquireFailure: 獲取鏈接失敗將會引發全部等待鏈接池來獲取鏈接的線程拋出異常。可是數據源仍有效保留,並在下次調用getConnection()的時候繼續嘗試獲取鏈接。若是設爲true,那麼在嘗試獲取鏈接失敗後該數據源將申明已斷開並永久關閉。Default: false

testConnectionOnCheckout:因性能消耗大請只在須要的時候使用它。若是設爲true那麼在每一個connection提交的時候都將校驗其有效性。建議使用idleConnectionTestPeriod或automaticTestTable等方法來提高鏈接測試的性能。Default: false

參考文檔:

http://esffor.iteye.com/blog/96116

http://q.sohu.com/forum/5/topic/292065

3 web中自動加載applicationContext

第一種使用 ContextLoaderListener 註冊 ApplicationContext 的配置文件以下,注意:下面的配置文件不是在 Spring 的配置文件中增長,而是在 web.xm1文件中增長。

<!肯定配置文件的位置--〉
<context-param>
    <param-name>contextConfigLocation</param-name>
    <!--此處能夠列出多個Spring 的 XML 配置文件→
    <param-value>/WEB-INF/daoContext.xml/WEB-iNF/applicationContext.xml</param-value>
</context-param>
<!-- 應用啓動時,自動加載listener,該 listener會讀取上面肯定的XML配置文件。而後建立ApplicationContext實例--〉
<listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

第二種使用 ContextLoaderServlet註冊 ApplicationContext的配置文件以下。一樣,下面的配置文件也不是在Spring的配置文件中增長,而是在web.xm1文件中增長。

<servlet>
<!--肯定Servlet 的名-->
<servlet-name>context</servlet-name>
<!--肯定 Servlet對應的類--〉
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<!--肯定Servlet的啓動級別--〉
<load-on-startup>l</load-on-startup>
</servlet>

採用這種方式時,應將context 的啓動級別設成最小,即最優先啓動。由於ApplicationContext是整個應用的核心。

配置完成後便可經過WebApplicationContextUtils.getWebApplicationContext方法在Web應用中獲取ApplicationContext引用。

ApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext();
LoginAction action=(LoginAction)ctx.getBean("action");

參考文檔:

http://mintelong.iteye.com/blog/665524

http://java999.blog.51cto.com/259217/196397

總結一下,本文是對spring的一些小技巧的總結,內容比較雜。

相關文章
相關標籤/搜索