Skip to content

Add an option to disable LazyConnectionDataSourceProxy eager checkDefaultConnectionProperties call #29932

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
* to retrieve the native JDBC Connection.
*
* @author Juergen Hoeller
* @author Réda Housni Alaoui
* @since 1.1.4
* @see DataSourceTransactionManager
*/
Expand All @@ -91,6 +92,8 @@ public class LazyConnectionDataSourceProxy extends DelegatingDataSource {
@Nullable
private Integer defaultTransactionIsolation;

private boolean checkDefaultConnectionPropertiesEagerly = true;


/**
* Create a new LazyConnectionDataSourceProxy.
Expand Down Expand Up @@ -152,14 +155,24 @@ public void setDefaultTransactionIsolationName(String constantName) {
setDefaultTransactionIsolation(constants.asNumber(constantName).intValue());
}

/**
* Configure the activation of default connection properties eager check.
* <p>If enabled, default connection properties will be checked by retrieving and inspecting a {@link Connection}
* during the end of the bean initialization.
* <p>If disabled, the check will be done lazily.
* @see #checkDefaultConnectionProperties
*/
public void setCheckDefaultConnectionPropertiesEagerly(boolean checkDefaultConnectionPropertiesEagerly) {
this.checkDefaultConnectionPropertiesEagerly = checkDefaultConnectionPropertiesEagerly;
}

@Override
public void afterPropertiesSet() {
super.afterPropertiesSet();

// Determine default auto-commit and transaction isolation
// via a Connection from the target DataSource, if possible.
if (this.defaultAutoCommit == null || this.defaultTransactionIsolation == null) {
if (this.checkDefaultConnectionPropertiesEagerly && (this.defaultAutoCommit == null || this.defaultTransactionIsolation == null)) {
try {
try (Connection con = obtainTargetDataSource().getConnection()) {
checkDefaultConnectionProperties(con);
Expand Down