增加了@UseDataSource取值动态处理逻辑支持处理器

1:DataSourceProcessor 为处理器接口
2:DelegatingDataSourceProcessor 为DataSourceProcessor的委托类,目的增强扩大 DataSourceProcessor类或对象的结构
3:ParamIndexDataSourceProcessor 简单参数所以读取的支持处理器
4:SpelExpressionDataSourceProcessor 支持SPEL 表达式的处理器类
This commit is contained in:
chxlay 2024-12-07 17:04:58 +08:00
parent 8a14307fba
commit 3ef1ed59ad

View File

@ -9,12 +9,16 @@ import java.util.List;
/** /**
* DataSourceProcessor 委托扩展类, DataSourceProcessor 结构进行扩大和增强 * DataSourceProcessor 委托扩展类, DataSourceProcessor 结构进行扩大和增强
* 如果多个实例化建议通过 DelegatingDataSourceProcessor.with(多个解析处理器实例) 方式进行实例化
* 需要注意的是委托解析处理器之间有先后顺序一点排列前面的解析处理器正常处理后将直接返回处理值不再往下传递处理
* *
* @author Alay * @author Alay
* @since 2024-12-07 15:38 * @since 2024-12-07 15:38
*/ */
public class DelegatingDataSourceProcessor implements DataSourceProcessor { public class DelegatingDataSourceProcessor implements DataSourceProcessor {
/**
* 多个处理器委托集合(使用时请注意 DataSourceProcessor 的顺序)
*/
private final List<DataSourceProcessor> delegates; private final List<DataSourceProcessor> delegates;
@ -43,7 +47,7 @@ public class DelegatingDataSourceProcessor implements DataSourceProcessor {
@Override @Override
public String process(String dataSourceKey, Object mapper, Method method, Object[] arguments) { public String process(String dataSourceKey, Object mapper, Method method, Object[] arguments) {
for (DataSourceProcessor delegate : delegates) { for (DataSourceProcessor delegate : delegates) {
// 使用时请注意 DataSourceProcessor 的顺序,一旦匹配到处理器将进行中断处理并返回处理结果 // 使用时请注意 DataSourceProcessor 的顺序,一旦匹配到处理器将进行终止处理链并返回当前处理结果
String returnKey = delegate.process(dataSourceKey, mapper, method, arguments); String returnKey = delegate.process(dataSourceKey, mapper, method, arguments);
if (null != returnKey) return returnKey; if (null != returnKey) return returnKey;
} }