From c420adf006107cf71b9d94af059f61daac57f8ac Mon Sep 17 00:00:00 2001 From: chxlay Date: Mon, 30 Dec 2024 11:32:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/datasource/processor/DataSourceProcessor.java | 8 ++++++++ .../processor/DelegatingDataSourceProcessor.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/processor/DataSourceProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/processor/DataSourceProcessor.java index a0737b0a..9ffad5b3 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/processor/DataSourceProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/processor/DataSourceProcessor.java @@ -7,6 +7,14 @@ import java.lang.reflect.Method; /** * 动态数据源 @UseDataSource的value值解析处理器(如表达式解析取值等),使用时推荐使用 DelegatingDataSourceProcessor{@link DelegatingDataSourceProcessor} 实例化 * 对动态数据源注解@UseDataSource 增强处理{@link com.mybatisflex.annotation.UseDataSource} + *

+ * 使用区分Spring模式 和 非Spring模式,Spring模式下,代理处理逻辑 DataSourceInterceptor{@link com.mybatisflex.spring.datasource.DataSourceInterceptor} 优先级高于 FlexMapperProxy{@link com.mybatisflex.core.mybatis.binding.FlexMapperProxy} ; + * 所以Spring模式下仅 DataSourceInterceptor 生效(切面生效的前提下)。非Spring 模式下,仅支持注解使用到 Mapper(Dao层),使用到其他层(如Service层)不支持注解解析。 + *

+ * Spring模式下,切面生效的前提下,不区分使用到程序的层(Controller、Service、Dao层都支持),但是建议使用到Mapper层使用注解。其更接近数据操作,更符合控制粒度。 + * 使用在 Controller 和 Service 层则其下层调用的所有操作都会受影响,控制粒度会比较粗,受影响面大。而且容易被下层的注解配置替换上层的注解配置。 + *

+ * 如果同一个调用链多处使用注解 @UseDataSource 则越接近Dao层优先级越高,如 Service 和 Mapper 上同时使用了,则 Service 中解析出来后,当执行 Mapper 时再次解析,会覆盖之前的值。 * * @author Alay * @since 2024-12-07 15:34 diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/processor/DelegatingDataSourceProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/processor/DelegatingDataSourceProcessor.java index e15f1b92..68d45f7d 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/processor/DelegatingDataSourceProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/datasource/processor/DelegatingDataSourceProcessor.java @@ -10,7 +10,7 @@ import java.util.List; /** * DataSourceProcessor 委托扩展类,对 DataSourceProcessor 结构进行扩大和增强 * 如果多个实例化,建议通过 DelegatingDataSourceProcessor.with(多个解析处理器实例) 方式进行实例化。 - * 需要注意的是委托解析处理器之间有先后顺序,一点排列前面的解析处理器正常处理后,将直接返回处理值,不再往下传递处理 + * 需要注意的是委托解析处理器之间有先后顺序,一旦排列前面的解析处理器正常处理后,将直接返回处理值,不再往下传递处理 * * @author Alay * @since 2024-12-07 15:38