Spring系列之資料來源的配置
資料來源,連線池,資料庫三者的區別
連線池:這個應該都學習過,比如c3p0,druid等等,連線池的作用是為了提高程式的效率,因為頻繁的去建立,關閉資料庫連線,會對效能有很大的消耗,所以就有了連線池,連線池顧名思義是儲存多個連線的池子,池子中的連線都是建立好的,我們只要拿來使用即可,不用的時候就歸還給連線池,這就大大減少了關閉建立連線的時間,提高了效率
資料庫:儲存資料的地方
資料來源:資料來源顧名思義是資料的來源,儲存了連線資料庫所需要的資訊,也可以說是用於管理資料庫連線池,並不儲存真正的資料,僅僅記錄了連線哪個資料庫,怎麼連線。如果把資料庫比作一個檔案的話,那麼資料來源儲存的就是檔案的名稱,可以通過檔名稱來找到對應的檔案,算是一個抽象的對映,一個資料庫對應一個資料來源,資料來源可能是一個連線,也可能是一個連線池
如果你是玫瑰,他就是牛糞
呸呸呸,說錯了
如果資料是水,資料庫就是水庫,資料來源就是管道,終端使用者看到的資料集是管道里流出來的水。
Spring功能這麼強大,怎麼可能少的了資料來源呢
Spring配置資料來源
配置步驟:
1.匯入資料來源的座標與資料庫驅動座標
2.建立資料來源物件
3.設定資料來源的基本連線資訊
4.使用資料來源獲取連線或歸還連線
需要匯入的座標資訊
junit
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
druid
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
c3p0
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
spring—context
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.3.RELEASE</version>
</dependency>
mysql
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
我先手動配置一波,等一下再用Spring容器經行配置,大家就能看到二者的巨大差別了
手動配置資料來源
druid
public void main() throws Exception{
//建立資料來源
DruidDataSource druidDataSource = new DruidDataSource();
//設定連線引數
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql://localhost:3309/one");
druidDataSource.setUsername("root");
druidDataSource.setPassword("1234");
//獲取連線物件
DruidPooledConnection connection = druidDataSource.getConnection();
System.out.println(connection);
}
c3p0
public void test2() throws Exception{
//建立資料來源
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
//設定連線引數
comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3309/one");
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("1234");
//獲取連線物件
comboPooledDataSource.getConnection();
System.out.println(comboPooledDataSource);
}
為了降低耦合性之前我們是通過讀取配置檔案的方法,這裡我給大家重新複習一下
首先抽取要配置的資訊到配置檔案
右端的字串注意不要加雙引號,否則會報錯,因為他預設就是字串
jdbc.Driver=com.mysql.jdbc.Driver
jdbc.Url=jdbc:mysql://localhost:3309/one
jdbc.Username=root
jdbc.Password=1234
再讀取配置檔案來建立連線池
public void test3() throws Exception{
//載入路徑下的properties
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
//建立資料來源
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
//設定連線引數
comboPooledDataSource.setDriverClass(bundle.getString("jdbc.Driver"));
comboPooledDataSource.setJdbcUrl(bundle.getString("jdbc.Url"));
comboPooledDataSource.setUser(bundle.getString("jdbc.Username"));
comboPooledDataSource.setPassword(bundle.getString("jdbc.Password"));
//獲取連線物件
comboPooledDataSource.getConnection();
System.out.println(comboPooledDataSource);
}
這樣的方式很好的降低了耦合性
重點來了,下面我們來講講如何使用Spring來配置資料來源
Spring配置資料來源
將DataSource的建立權交給Spring容器去完成
DataSource有無參構造方法,Spring預設就是通過無參構造方法例項化物件
DataSource要想使用需要通過set方法設定資料庫連線資訊,Spring可以通過set方法進行注入
在Spring容器中配置Bean
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3309/one"/>
<property name="user" value="root"/>
<property name="password" value="1234"/>
</bean>
到容器中獲取資源
public void two() throws SQLException {
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationcontext.xml");
DataSource datasource = (DataSource)classPathXmlApplicationContext.getBean("datasource");
Connection connection = datasource.getConnection();
System.out.println(connection);
}
上面的方法是不是還不夠方便,我們可以用更方便的,即讀取配置檔案的方法
我們首先引入名稱空間與約束路徑
名稱空間:xmlns:context="http://www.springframework.org/schema/context"
約束路徑:http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
容器載入配置檔案
<context:property-placeholder location="classpath:jdbc.properties"/>
配置Bean
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
以上就是Spring配置源的一些知識,有志同道合的夥伴可以關注我或者私信我加好友一同學習章,共勉