update anyline 8.7.2-20240726

2.X
疯狂的狮子Li 6 months ago
parent 16f3dc5f16
commit b8f4afab5f

@ -58,7 +58,7 @@
<!-- SMS 配置 --> <!-- SMS 配置 -->
<sms4j.version>3.2.1</sms4j.version> <sms4j.version>3.2.1</sms4j.version>
<!-- 面向运行时的D-ORM依赖 --> <!-- 面向运行时的D-ORM依赖 -->
<anyline.version>8.7.2-20240722</anyline.version> <anyline.version>8.7.2-20240726</anyline.version>
<!-- 工作流配置 --> <!-- 工作流配置 -->
<flowable.version>7.0.1</flowable.version> <flowable.version>7.0.1</flowable.version>
<!-- mq配置 --> <!-- mq配置 -->

@ -0,0 +1,81 @@
package org.dromara.gen.config;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.anyline.data.datasource.DataSourceMonitor;
import org.anyline.util.ConfigTable;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Component
public class MyBatisDataSourceMonitor implements DataSourceMonitor {
public MyBatisDataSourceMonitor() {
// 调整执行模式为自定义
ConfigTable.KEEP_ADAPTER = 2;
}
private final Map<String, String> features = new HashMap<>();
/**
* adapter JDBC<br/>
* _url null driver__url
*
* @param datasource
* @return String null
*/
@Override
public String feature(Object datasource) {
String feature = null;
if (datasource instanceof JdbcTemplate jdbc) {
DataSource ds = jdbc.getDataSource();
if (ds instanceof DynamicRoutingDataSource) {
String key = DynamicDataSourceContextHolder.peek();
feature = features.get(key);
if (null == feature) {
Connection con = null;
try {
con = DataSourceUtils.getConnection(ds);
DatabaseMetaData meta = con.getMetaData();
String url = meta.getURL();
feature = meta.getDatabaseProductName().toLowerCase().replace(" ", "") + "_" + url;
features.put(key, feature);
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
if (null != con && !DataSourceUtils.isConnectionTransactional(con, ds)) {
DataSourceUtils.releaseConnection(con, ds);
}
}
}
}
}
return feature;
}
/**
* ConfigTable.KEEP_ADAPTER=2 : adapter<br/>
* DynamicRoutingDataSourcefalse,DynamicRoutingDataSource, true
*
* @param datasource
* @return boolean
*/
@Override
public boolean keepAdapter(Object datasource) {
if (datasource instanceof JdbcTemplate jdbc) {
DataSource ds = jdbc.getDataSource();
return !(ds instanceof DynamicRoutingDataSource);
}
return true;
}
}
Loading…
Cancel
Save