|
|
|
@ -16,6 +16,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
package org.springframework.boot.jdbc; |
|
|
|
package org.springframework.boot.jdbc; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.beans.PropertyVetoException; |
|
|
|
import java.lang.reflect.Method; |
|
|
|
import java.lang.reflect.Method; |
|
|
|
import java.sql.SQLException; |
|
|
|
import java.sql.SQLException; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Collections; |
|
|
|
@ -27,6 +28,7 @@ import java.util.function.Supplier; |
|
|
|
|
|
|
|
|
|
|
|
import javax.sql.DataSource; |
|
|
|
import javax.sql.DataSource; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.mchange.v2.c3p0.ComboPooledDataSource; |
|
|
|
import com.zaxxer.hikari.HikariDataSource; |
|
|
|
import com.zaxxer.hikari.HikariDataSource; |
|
|
|
import oracle.jdbc.datasource.OracleDataSource; |
|
|
|
import oracle.jdbc.datasource.OracleDataSource; |
|
|
|
import oracle.ucp.jdbc.PoolDataSource; |
|
|
|
import oracle.ucp.jdbc.PoolDataSource; |
|
|
|
@ -391,6 +393,8 @@ public final class DataSourceBuilder<T extends DataSource> { |
|
|
|
MappedDbcp2DataSource::new); |
|
|
|
MappedDbcp2DataSource::new); |
|
|
|
result = lookup(classLoader, type, result, "oracle.ucp.jdbc.PoolDataSourceImpl", |
|
|
|
result = lookup(classLoader, type, result, "oracle.ucp.jdbc.PoolDataSourceImpl", |
|
|
|
OraclePoolDataSourceProperties::new, "oracle.jdbc.OracleConnection"); |
|
|
|
OraclePoolDataSourceProperties::new, "oracle.jdbc.OracleConnection"); |
|
|
|
|
|
|
|
result = lookup(classLoader, type, result, "com.mchange.v2.c3p0.ComboPooledDataSource", |
|
|
|
|
|
|
|
ComboPooledDataSourceProperties::new); |
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -650,6 +654,29 @@ public final class DataSourceBuilder<T extends DataSource> { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* {@link DataSourceProperties} for C3P0. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private static class ComboPooledDataSourceProperties extends MappedDataSourceProperties<ComboPooledDataSource> { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ComboPooledDataSourceProperties() { |
|
|
|
|
|
|
|
add(DataSourceProperty.URL, ComboPooledDataSource::getJdbcUrl, ComboPooledDataSource::setJdbcUrl); |
|
|
|
|
|
|
|
add(DataSourceProperty.DRIVER_CLASS_NAME, ComboPooledDataSource::getDriverClass, this::setDriverClass); |
|
|
|
|
|
|
|
add(DataSourceProperty.USERNAME, ComboPooledDataSource::getUser, ComboPooledDataSource::setUser); |
|
|
|
|
|
|
|
add(DataSourceProperty.PASSWORD, ComboPooledDataSource::getPassword, ComboPooledDataSource::setPassword); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void setDriverClass(ComboPooledDataSource dataSource, String driverClass) { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
dataSource.setDriverClass(driverClass); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (PropertyVetoException ex) { |
|
|
|
|
|
|
|
throw new IllegalArgumentException(ex); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* {@link DataSourceProperties} for Spring's {@link SimpleDriverDataSource}. |
|
|
|
* {@link DataSourceProperties} for Spring's {@link SimpleDriverDataSource}. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|