a.MessageSource,提供了語言信息的國際化支持
b.提供資源(如URL和文件系統)的訪問支持
c.爲實現了ApplicationListener接口的bean提供了事件傳播支持
d.爲不同的應用環境提供不同的context,例如支持web應用的XmlWebApplicationContext類
<!-- 頭文件,主要注意一下編碼 -->
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
<!-- 建立數據源 -->
- <bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource">
<!-- 數據庫驅動,我這裏使用的是Mysql數據庫 -->
- <propertyname propertyname="driverClassName">
- <value>com.mysql.jdbc.Driver</value>
- </property>
<!-- 數據庫地址,這裏也要注意一下編碼,不然亂碼可是很鬱悶的哦! -->
- <property name="url">
- <value>
- jdbc:mysql://localhost:3306/tie?useUnicode=true&characterEncoding=utf-8
- </value>
- </property>
<!-- 數據庫的用戶名 -->
- <property name="username">
- <value>root</value>
- </property>
<!-- 數據庫的密碼 -->
- <property name="password">
- <value>123</value>
- </property>
- </bean>
<!-- 把數據源注入給Session工廠 -->
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource">
- <ref bean="dataSource" />
- </property>
<!-- 配置映射文件 -->
- <property name="mappingResources">
- <list>
- <value>com/alonely/vo/User.hbm.xml</value>
- </list>
- </property>
- </bean>
(1) Oracle
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)(SERVER=DEDICATED)))" />
<property name="username" value="rootl" />
<property name="password" value="1234" />
</bean>
(2)DB2
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.ibm.db2.jdbc.app.DB2Driver" />
<property name="url" value="jdbc:db2:thin:@localhost:5000/testDB" />
<property name="username" value="rootl" />
<property name="password" value="1234" />
</bean>
(3)SQL Server
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName = testDB" />
<property name="username" value="rootl" />
<property name="password" value="1234" />
</bean>
org.apache.commons.dbcp.BasicDataSource 需要commons-pool.jar,commons-dbcp-1.2.2.jar,commons-collections-3.2.jar三個JAR包,但是這種模式不能動態修改數據庫,下面將介紹動態修改數據庫鏈接。
【3】動態修改數據庫鏈接(此沒經過具體測試,轉自點擊打開鏈接)
需要訪問多個數據庫,而且需要在服務器運行不重新啓動的情況下,動態的修改spring中配置的數據源datasource,spring的配置文件是在容器啓動的時候就加載到內存中的,如果手動改了application.xml,我們必須要重新啓動服務器配置文件纔會生效。而在spring中提供了一個類WebApplicationContext,這個類可以讓你獲得一些bean,可以修改內存中的信息,通過這個類來實現的。下面是具體的代碼。
package com.southdigital.hospital;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class ChangeSpringConfig extends HttpServlet
{
private String ipAddress = "127.0.0.1";
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//先取得servleContext對象,提供給spring的WebApplicationUtils來動態修改applicationContext.xml
ipAddress = request.getParameter("ipAddress");
System.out.println(ipAddress);
ServletContext servletContext = this.getServletContext();
WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
ComboPooledDataSource cpds = (ComboPooledDataSource) applicationContext.getBean("dataSource");
cpds.setJdbcUrl("jdbc:mysql://"+ipAddress+":3306/ssh");
}
}
注意:通過這種方法修改applicationContext.xml文件的時候用c3p0,而不可以用dbcp,dbcp不支持動態修改讀取到內存裏面的數據。【4】Spring與Hibernate通過applicationContext.xml關聯