Browse Source

解耦spring兼容修改为spi方式加载

hubin 6 months ago
parent
commit
b2b10eb77a

+ 5 - 5
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/compatible/CompatibleHelper.java

@@ -15,6 +15,8 @@
  */
  */
 package com.baomidou.mybatisplus.extension.compatible;
 package com.baomidou.mybatisplus.extension.compatible;
 
 
+import java.util.ServiceLoader;
+
 /**
 /**
  * 兼容处理辅助类
  * 兼容处理辅助类
  */
  */
@@ -23,12 +25,10 @@ public class CompatibleHelper {
     private static CompatibleSet COMPATIBLE_SET;
     private static CompatibleSet COMPATIBLE_SET;
 
 
     public static CompatibleSet getCompatibleSet() {
     public static CompatibleSet getCompatibleSet() {
-        return COMPATIBLE_SET;
-    }
-
-    public static void setCompatibleSet(CompatibleSet compatibleSet) {
         if (null == COMPATIBLE_SET) {
         if (null == COMPATIBLE_SET) {
-            COMPATIBLE_SET = compatibleSet;
+            ServiceLoader<CompatibleSet> loader = ServiceLoader.load(CompatibleSet.class);
+            COMPATIBLE_SET = loader.iterator().next();
         }
         }
+        return COMPATIBLE_SET;
     }
     }
 }
 }

+ 0 - 1
mybatis-plus-generator/build.gradle

@@ -1,5 +1,4 @@
 dependencies {
 dependencies {
-    implementation project(":mybatis-plus-extension")
     implementation project(":mybatis-plus-spring")
     implementation project(":mybatis-plus-spring")
     implementation "${lib.velocity}"
     implementation "${lib.velocity}"
     implementation "${lib.freemarker}"
     implementation "${lib.freemarker}"

+ 1 - 0
mybatis-plus-spring/src/main/resources/META-INF/services/com.baomidou.mybatisplus.extension.compatible.CompatibleSet

@@ -0,0 +1 @@
+com.baomidou.mybatisplus.extension.compatible.SpringCompatibleSet

+ 0 - 5
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/BaseDbTest.java

@@ -8,8 +8,6 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.extension.compatible.CompatibleHelper;
-import com.baomidou.mybatisplus.extension.compatible.SpringCompatibleSet;
 import org.apache.ibatis.io.Resources;
 import org.apache.ibatis.io.Resources;
 import org.apache.ibatis.logging.slf4j.Slf4jImpl;
 import org.apache.ibatis.logging.slf4j.Slf4jImpl;
 import org.apache.ibatis.mapping.Environment;
 import org.apache.ibatis.mapping.Environment;
@@ -89,9 +87,6 @@ public abstract class BaseDbTest<T> extends TypeReference<T> {
             interceptors.forEach(configuration::addInterceptor);
             interceptors.forEach(configuration::addInterceptor);
         }
         }
         sqlSessionFactory = builder.build(configuration);
         sqlSessionFactory = builder.build(configuration);
-
-        // 注入 spring 兼容配置
-        CompatibleHelper.setCompatibleSet(new SpringCompatibleSet());
     }
     }
 
 
     private DataSource dataSource() {
     private DataSource dataSource() {

+ 2 - 15
spring-boot-starter/mybatis-plus-spring-boot-autoconfigure/src/main/java/com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.java

@@ -24,8 +24,6 @@ import com.baomidou.mybatisplus.core.handlers.PostInitTableInfoHandler;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
 import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
 import com.baomidou.mybatisplus.core.injector.ISqlInjector;
 import com.baomidou.mybatisplus.core.injector.ISqlInjector;
-import com.baomidou.mybatisplus.extension.compatible.CompatibleHelper;
-import com.baomidou.mybatisplus.extension.compatible.SpringCompatibleSet;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.mapping.DatabaseIdProvider;
 import org.apache.ibatis.mapping.DatabaseIdProvider;
@@ -43,11 +41,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanWrapper;
 import org.springframework.beans.BeanWrapper;
 import org.springframework.beans.BeanWrapperImpl;
 import org.springframework.beans.BeanWrapperImpl;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.ListableBeanFactory;
-import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.beans.factory.*;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.support.BeanDefinitionRegistry;
 import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -76,11 +70,7 @@ import org.springframework.util.StringUtils;
 
 
 import javax.sql.DataSource;
 import javax.sql.DataSource;
 import java.beans.PropertyDescriptor;
 import java.beans.PropertyDescriptor;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Consumer;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.Stream;
@@ -150,9 +140,6 @@ public class MybatisPlusAutoConfiguration implements InitializingBean {
         this.sqlSessionFactoryBeanCustomizers = sqlSessionFactoryBeanCustomizers.getIfAvailable();
         this.sqlSessionFactoryBeanCustomizers = sqlSessionFactoryBeanCustomizers.getIfAvailable();
         this.mybatisPlusPropertiesCustomizers = mybatisPlusPropertiesCustomizerProvider.getIfAvailable();
         this.mybatisPlusPropertiesCustomizers = mybatisPlusPropertiesCustomizerProvider.getIfAvailable();
         this.applicationContext = applicationContext;
         this.applicationContext = applicationContext;
-
-        // 注入兼容配置
-        CompatibleHelper.setCompatibleSet(new SpringCompatibleSet());
     }
     }
 
 
     @Override
     @Override