Closed shen3 closed 4 months ago
不喜欢提前赋值的这种方式
DataSource realDataSource = null; if (dataSource instanceof ItemDataSource) { realDataSource = ((ItemDataSource) dataSource).getRealDataSource(); } else { if (seata) { if (dataSource instanceof DataSourceProxy) { DataSourceProxy dataSourceProxy = (DataSourceProxy) dataSource; realDataSource = dataSourceProxy.getTargetDataSource(); } } if (p6spy) { if (dataSource instanceof P6DataSource) { Field realDataSourceField = P6DataSource.class.getDeclaredField("realDataSource"); realDataSourceField.setAccessible(true); realDataSource = (DataSource) realDataSourceField.get(dataSource); } } }
if (null == realDataSource) { realDataSource = dataSource; }
if (null != realDataSource) { DataSourceDestroyer destroyer = new DefaultDataSourceDestroyer(); if (graceDestroy) { destroyer.asyncDestroy(ds, realDataSource); } else { destroyer.destroy(ds, realDataSource); } }
en
已重新提交
What kind of change does this PR introduce? (check at least one)
The description of the PR: 1、closeDataSource方法进来默认直接把数据源dataSource 赋值给 realDatasource。下面if...else条件如果为真,realDatasource会被重新赋值,不影响原来的逻辑。 2、如果dataSource 是Druid等其他的数据源,也能够被closed。