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

This commit is contained in:
hubin 2024-10-16 17:28:19 +08:00
parent 8376d1b19a
commit b2b10eb77a
5 changed files with 9 additions and 27 deletions

View File

@ -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() {
if (null == COMPATIBLE_SET) {
ServiceLoader<CompatibleSet> loader = ServiceLoader.load(CompatibleSet.class);
COMPATIBLE_SET = loader.iterator().next();
}
return COMPATIBLE_SET; return COMPATIBLE_SET;
} }
public static void setCompatibleSet(CompatibleSet compatibleSet) {
if (null == COMPATIBLE_SET) {
COMPATIBLE_SET = compatibleSet;
}
}
} }

View File

@ -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}"

View File

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

View File

@ -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() {

View File

@ -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.*;
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.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.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
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