nieqiurong@163.com пре 7 година
родитељ
комит
84a522c0e8

+ 0 - 15
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/GlobalConfig.java

@@ -43,10 +43,6 @@ public class GlobalConfig {
      * SQL注入器
      */
     private String sqlInjector;
-    /**
-     * 元对象字段填充控制器
-     */
-    private String metaObjectHandler;
     /**
      * 字段验证策略
      */
@@ -104,14 +100,6 @@ public class GlobalConfig {
         this.sqlInjector = sqlInjector;
     }
 
-    public String getMetaObjectHandler() {
-        return metaObjectHandler;
-    }
-
-    public void setMetaObjectHandler(String metaObjectHandler) {
-        this.metaObjectHandler = metaObjectHandler;
-    }
-
     public Integer getFieldStrategy() {
         return fieldStrategy;
     }
@@ -190,9 +178,6 @@ public class GlobalConfig {
         if (StringUtils.isNotEmpty(this.getSqlInjector())) {
             globalConfiguration.setSqlInjector((ISqlInjector) Class.forName(this.getSqlInjector()).newInstance());
         }
-        if (StringUtils.isNotEmpty(this.getMetaObjectHandler())) {
-            globalConfiguration.setMetaObjectHandler((MetaObjectHandler) Class.forName(this.getMetaObjectHandler()).newInstance());
-        }
         if (StringUtils.isNotEmpty(this.getKeyGenerator())) {
             globalConfiguration.setKeyGenerator((IKeyGenerator) Class.forName(this.getKeyGenerator()).newInstance());
         }

+ 19 - 3
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/spring/boot/starter/MybatisPlusAutoConfiguration.java

@@ -5,6 +5,8 @@ import java.util.List;
 import javax.annotation.PostConstruct;
 import javax.sql.DataSource;
 
+import com.baomidou.mybatisplus.entity.GlobalConfiguration;
+import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
@@ -28,6 +30,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.ResourceLoaderAware;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Import;
@@ -77,17 +80,20 @@ public class MybatisPlusAutoConfiguration {
     private final DatabaseIdProvider databaseIdProvider;
 
     private final List<ConfigurationCustomizer> configurationCustomizers;
-
+    
+    private final ApplicationContext applicationContext;
+    
     public MybatisPlusAutoConfiguration(MybatisPlusProperties properties,
                                         ObjectProvider<Interceptor[]> interceptorsProvider,
                                         ResourceLoader resourceLoader,
                                         ObjectProvider<DatabaseIdProvider> databaseIdProvider,
-                                        ObjectProvider<List<ConfigurationCustomizer>> configurationCustomizersProvider) {
+                                        ObjectProvider<List<ConfigurationCustomizer>> configurationCustomizersProvider,ApplicationContext applicationContext) {
         this.properties = properties;
         this.interceptors = interceptorsProvider.getIfAvailable();
         this.resourceLoader = resourceLoader;
         this.databaseIdProvider = databaseIdProvider.getIfAvailable();
         this.configurationCustomizers = configurationCustomizersProvider.getIfAvailable();
+        this.applicationContext = applicationContext;
     }
 
     @PostConstruct
@@ -141,9 +147,19 @@ public class MybatisPlusAutoConfiguration {
         if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {
             factory.setMapperLocations(this.properties.resolveMapperLocations());
         }
+        GlobalConfiguration globalConfig;
         if (!ObjectUtils.isEmpty(this.properties.getGlobalConfig())) {
-            factory.setGlobalConfig(this.properties.getGlobalConfig().convertGlobalConfiguration());
+            globalConfig = this.properties.getGlobalConfig().convertGlobalConfiguration();
+        }else {
+            globalConfig = new GlobalConfiguration();
+        }
+        //注入定义填充
+        if (this.applicationContext.getBeanNamesForType(MetaObjectHandler.class, false,
+            false).length > 0) {
+            MetaObjectHandler metaObjectHandler = this.applicationContext.getBean(MetaObjectHandler.class);
+            globalConfig.setMetaObjectHandler(metaObjectHandler);
         }
+        factory.setGlobalConfig(globalConfig);
         return factory.getObject();
     }
 

+ 1 - 7
mybatis-plus-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@@ -93,12 +93,6 @@
       "type": "java.lang.String",
       "description": "逻辑未删除全局值"
     },
-    {
-      "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
-      "name": "mybatis-plus.global-config.meta-object-handler",
-      "type": "java.lang.String",
-      "description": "元对象字段填充控制器"
-    },
     {
       "sourceType": "com.baomidou.mybatisplus.spring.boot.starter.GlobalConfig",
       "name": "mybatis-plus.global-config.refresh-mapper",
@@ -117,4 +111,4 @@
       "description": "自定义枚举包"
     }
   ]
-}
+}