diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java index 94ede760e..71039219f 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java @@ -42,6 +42,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Primary; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -118,13 +119,16 @@ public class MybatisPlusConfiguration implements WebMvcConfigurer { /** * 数据权限拦截器 + *
+ * 远程数据权限客户端延迟到首次权限计算时解析,避免 MyBatis 在应用启动期创建 + * Feign 子上下文,进而与 MVC、安全拦截器等业务扩展形成循环初始化。 * * @return DataScopeInterceptor */ @Bean @ConditionalOnMissingBean @ConditionalOnBean(UserContextHolder.class) - public DataScopeInterceptor dataScopeInterceptor(RemoteDataScopeService dataScopeService, + public DataScopeInterceptor dataScopeInterceptor(@Lazy RemoteDataScopeService dataScopeService, UserContextHolder userContextHolder) { DataScopeInnerInterceptor dataScopeInnerInterceptor = new DataScopeInnerInterceptor(); dataScopeInnerInterceptor.setDataScopeHandle(new PigxDefaultDataScopeHandle(dataScopeService, userContextHolder));