0
HikariCP數據源可以用懶惰配置啓動嗎?HikariCP懶惰與春天LazyConnectionDataSourceProxy
爲此,我使用Spring LazyConnectionDataSourceProxy。
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig" lazy-init="true">
<property name="poolName" value="TargetHikariCP" />
<property name="dataSourceClassName" value="oracle.jdbc.pool.OracleDataSource" />
<property name="connectionInitSql" value="SELECT 1 FROM DUAL"/>
<property name="leakDetectionThreshold" value="300000"/>
<property name="minimumIdle" value="1"/>
<property name="maximumPoolSize" value="10"/>
<property name="autoCommit" value="false"/>
<property name="dataSourceProperties"> <props> ... </props> </property>
</bean>
<bean id="dataSourceLazy" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close" lazy-init="true">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource" ref="dataSourceLazy" />
</bean>
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager" lazy-init="true">
<property name="dataSource" ref="dataSource" />
</bean>
儘管如此,它並不工作,因爲數據源在項目啓動時啓動。
使用org.springframework.jdbc.datasource.DriverManagerDataSource時的相同配置可正常工作。
不,因爲HikariCP是一個適當的連接池,它將在啓動過程中獲取連接。 'DriverManagerDataSource'不是連接池,因此在需要時創建與數據庫的連接(這通常是一個耗時的過程)。 –