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的一些小技巧的總結,內容比較雜。