spring boot中使用spring JdbcTemplate(一)——連線池建立多個連線
阿新 • • 發佈:2019-01-08
本文參考了網上一些文章,最後整理實踐得出。
1、建立一個springboot的demo程式,可以參考我的文章:
2、看一下目錄結構:
3、首先需要在pom檔案中引入依賴:
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.9</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
4、新增對應的連線池和連線物件在配置檔案datasourcemysql.xml中進行配置,同時需要在properties檔案中新增對應的jdbc.url等等的具體配置(這裡略過了)。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 資料來源 --> <bean id="dataSourcePool" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本屬性 url、user、password --> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1"/> <property name="minIdle" value="1"/> <property name="maxActive" value="20"/> <!-- 配置獲取連線等待超時的時間 --> <property name="maxWait" value="10000"/> <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000"/> <!-- 配置一個連線在池中最小生存的時間,單位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <!-- 開啟PSCache,並且指定每個連線上PSCache的大小 如果用Oracle,則把poolPreparedStatements配置為true,mysql可以配置為false。 --> <property name="poolPreparedStatements" value="false"/> <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/> </bean> <!-- 資料來源 --> <bean id="dataSourcePool2" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本屬性 url、user、password --> <property name="url" value="${jdbc.url2}"/> <property name="username" value="${jdbc.username2}"/> <property name="password" value="${jdbc.password2}"/> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1"/> <property name="minIdle" value="1"/> <property name="maxActive" value="20"/> <!-- 配置獲取連線等待超時的時間 --> <property name="maxWait" value="10000"/> <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000"/> <!-- 配置一個連線在池中最小生存的時間,單位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <!-- 開啟PSCache,並且指定每個連線上PSCache的大小 如果用Oracle,則把poolPreparedStatements配置為true,mysql可以配置為false。 --> <property name="poolPreparedStatements" value="false"/> <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/> </bean> <bean id="remoteJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSourcePool"></property> </bean> <bean id="localJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSourcePool2"></property> </bean> </beans>
5、在程式碼中注入注入兩個jdbc連線物件(這裡需要注意的是,這個變數的名稱必須和xml中宣告的bean的id相同,不然的話需要在@resource上添加註解指定name)
6、同時需要在springboot的啟動型別新增如下內容:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@ImportResource(locations = {"classpath:datasourcemysql.xml"})
這個的作用是禁止springboot自動繫結dbc的配置產生錯誤。還有就是把datasourcemysql.xml中宣告的bean新增到springboot的掃描範圍內。
7、使用的時候是這樣的。
@Resource
private JdbcTemplate remoteJdbcTemplate;
@Resource
private JdbcTemplate localJdbcTemplate;
8、然後就可以正常使用了。