Polish "Add support for Oracle UCP"
See gh-23403
This commit is contained in:
@@ -48,7 +48,6 @@ import org.springframework.util.StringUtils;
|
||||
* @author Phillip Webb
|
||||
* @author Stephane Nicoll
|
||||
* @author Kazuki Shimizu
|
||||
* @author Fabio Grassi
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@@ -70,7 +69,7 @@ public class DataSourceAutoConfiguration {
|
||||
@Conditional(PooledDataSourceCondition.class)
|
||||
@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
|
||||
@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
|
||||
DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.Ucp.class,
|
||||
DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
|
||||
DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
|
||||
protected static class PooledDataSourceConfiguration {
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -21,7 +21,7 @@ import java.sql.SQLException;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import oracle.ucp.jdbc.PoolDataSource;
|
||||
import oracle.jdbc.OracleConnection;
|
||||
import oracle.ucp.jdbc.PoolDataSourceImpl;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
@@ -31,7 +31,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.jdbc.DatabaseDriver;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.dao.InvalidDataAccessApiUsageException;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
@@ -116,26 +115,22 @@ abstract class DataSourceConfiguration {
|
||||
}
|
||||
|
||||
/**
|
||||
* UCP DataSource configuration.
|
||||
* Oracle UCP DataSource configuration.
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnClass(PoolDataSource.class)
|
||||
@ConditionalOnClass({ PoolDataSourceImpl.class, OracleConnection.class })
|
||||
@ConditionalOnMissingBean(DataSource.class)
|
||||
@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "oracle.ucp.jdbc.PoolDataSource",
|
||||
matchIfMissing = true)
|
||||
static class Ucp {
|
||||
static class OracleUcp {
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "spring.datasource.ucp")
|
||||
PoolDataSource dataSource(DataSourceProperties properties) {
|
||||
PoolDataSource dataSource = createDataSource(properties, PoolDataSourceImpl.class);
|
||||
@ConfigurationProperties(prefix = "spring.datasource.oracleucp")
|
||||
PoolDataSourceImpl dataSource(DataSourceProperties properties) throws SQLException {
|
||||
PoolDataSourceImpl dataSource = createDataSource(properties, PoolDataSourceImpl.class);
|
||||
dataSource.setValidateConnectionOnBorrow(true);
|
||||
if (StringUtils.hasText(properties.getName())) {
|
||||
try {
|
||||
dataSource.setConnectionPoolName(properties.getName());
|
||||
}
|
||||
catch (SQLException se) {
|
||||
throw new InvalidDataAccessApiUsageException("Error setting property connectionPoolName", se);
|
||||
}
|
||||
dataSource.setConnectionPoolName(properties.getName());
|
||||
}
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.springframework.boot.autoconfigure.jdbc.metadata;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import oracle.jdbc.OracleConnection;
|
||||
import oracle.ucp.jdbc.PoolDataSource;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
|
||||
@@ -25,8 +26,8 @@ import org.springframework.boot.jdbc.DataSourceUnwrapper;
|
||||
import org.springframework.boot.jdbc.metadata.CommonsDbcp2DataSourcePoolMetadata;
|
||||
import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadataProvider;
|
||||
import org.springframework.boot.jdbc.metadata.HikariDataSourcePoolMetadata;
|
||||
import org.springframework.boot.jdbc.metadata.OracleUcpDataSourcePoolMetadata;
|
||||
import org.springframework.boot.jdbc.metadata.TomcatDataSourcePoolMetadata;
|
||||
import org.springframework.boot.jdbc.metadata.UcpDataSourcePoolMetadata;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -94,15 +95,15 @@ public class DataSourcePoolMetadataProvidersConfiguration {
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnClass(PoolDataSource.class)
|
||||
static class UcpPoolDataSourceMetadataProviderConfiguration {
|
||||
@ConditionalOnClass({ PoolDataSource.class, OracleConnection.class })
|
||||
static class OracleUcpPoolDataSourceMetadataProviderConfiguration {
|
||||
|
||||
@Bean
|
||||
DataSourcePoolMetadataProvider UcpPoolDataSourceMetadataProvider() {
|
||||
DataSourcePoolMetadataProvider oracleUcpPoolDataSourceMetadataProvider() {
|
||||
return (dataSource) -> {
|
||||
PoolDataSource ucpDataSource = DataSourceUnwrapper.unwrap(dataSource, PoolDataSource.class);
|
||||
if (ucpDataSource != null) {
|
||||
return new UcpDataSourcePoolMetadata(ucpDataSource);
|
||||
return new OracleUcpDataSourcePoolMetadata(ucpDataSource);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user