miemie 5 gadi atpakaļ
vecāks
revīzija
6eab36a5a6

+ 21 - 5
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/autoconfigure/MybatisPlusLanguageDriverAutoConfiguration.java

@@ -23,6 +23,7 @@ import org.mybatis.scripting.thymeleaf.ThymeleafLanguageDriver;
 import org.mybatis.scripting.thymeleaf.ThymeleafLanguageDriverConfig;
 import org.mybatis.scripting.thymeleaf.ThymeleafLanguageDriverConfig;
 import org.mybatis.scripting.velocity.VelocityLanguageDriver;
 import org.mybatis.scripting.velocity.VelocityLanguageDriver;
 import org.mybatis.scripting.velocity.VelocityLanguageDriverConfig;
 import org.mybatis.scripting.velocity.VelocityLanguageDriverConfig;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
@@ -31,6 +32,9 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
 
 
 /**
 /**
+ * {@link EnableAutoConfiguration Auto-Configuration} for MyBatis's scripting language drivers.
+ * <p> copy from {@link org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration}</p>
+ *
  * @author miemie
  * @author miemie
  * @since 2019-10-22
  * @since 2019-10-22
  */
  */
@@ -47,7 +51,6 @@ public class MybatisPlusLanguageDriverAutoConfiguration {
     @ConditionalOnClass(FreeMarkerLanguageDriver.class)
     @ConditionalOnClass(FreeMarkerLanguageDriver.class)
     @ConditionalOnMissingClass("org.mybatis.scripting.freemarker.FreeMarkerLanguageDriverConfig")
     @ConditionalOnMissingClass("org.mybatis.scripting.freemarker.FreeMarkerLanguageDriverConfig")
     public static class LegacyFreeMarkerConfiguration {
     public static class LegacyFreeMarkerConfiguration {
-
         @Bean
         @Bean
         @ConditionalOnMissingBean
         @ConditionalOnMissingBean
         FreeMarkerLanguageDriver freeMarkerLanguageDriver() {
         FreeMarkerLanguageDriver freeMarkerLanguageDriver() {
@@ -61,7 +64,6 @@ public class MybatisPlusLanguageDriverAutoConfiguration {
     @Configuration
     @Configuration
     @ConditionalOnClass({FreeMarkerLanguageDriver.class, FreeMarkerLanguageDriverConfig.class})
     @ConditionalOnClass({FreeMarkerLanguageDriver.class, FreeMarkerLanguageDriverConfig.class})
     public static class FreeMarkerConfiguration {
     public static class FreeMarkerConfiguration {
-
         @Bean
         @Bean
         @ConditionalOnMissingBean
         @ConditionalOnMissingBean
         FreeMarkerLanguageDriver freeMarkerLanguageDriver(FreeMarkerLanguageDriverConfig config) {
         FreeMarkerLanguageDriver freeMarkerLanguageDriver(FreeMarkerLanguageDriverConfig config) {
@@ -84,7 +86,6 @@ public class MybatisPlusLanguageDriverAutoConfiguration {
     @ConditionalOnMissingClass("org.mybatis.scripting.velocity.VelocityLanguageDriverConfig")
     @ConditionalOnMissingClass("org.mybatis.scripting.velocity.VelocityLanguageDriverConfig")
     @SuppressWarnings("deprecation")
     @SuppressWarnings("deprecation")
     public static class LegacyVelocityConfiguration {
     public static class LegacyVelocityConfiguration {
-
         @Bean
         @Bean
         @ConditionalOnMissingBean
         @ConditionalOnMissingBean
         org.mybatis.scripting.velocity.Driver velocityLanguageDriver() {
         org.mybatis.scripting.velocity.Driver velocityLanguageDriver() {
@@ -98,7 +99,6 @@ public class MybatisPlusLanguageDriverAutoConfiguration {
     @Configuration
     @Configuration
     @ConditionalOnClass({VelocityLanguageDriver.class, VelocityLanguageDriverConfig.class})
     @ConditionalOnClass({VelocityLanguageDriver.class, VelocityLanguageDriverConfig.class})
     public static class VelocityConfiguration {
     public static class VelocityConfiguration {
-
         @Bean
         @Bean
         @ConditionalOnMissingBean
         @ConditionalOnMissingBean
         VelocityLanguageDriver velocityLanguageDriver(VelocityLanguageDriverConfig config) {
         VelocityLanguageDriver velocityLanguageDriver(VelocityLanguageDriverConfig config) {
@@ -116,7 +116,6 @@ public class MybatisPlusLanguageDriverAutoConfiguration {
     @Configuration
     @Configuration
     @ConditionalOnClass(ThymeleafLanguageDriver.class)
     @ConditionalOnClass(ThymeleafLanguageDriver.class)
     public static class ThymeleafConfiguration {
     public static class ThymeleafConfiguration {
-
         @Bean
         @Bean
         @ConditionalOnMissingBean
         @ConditionalOnMissingBean
         ThymeleafLanguageDriver thymeleafLanguageDriver(ThymeleafLanguageDriverConfig config) {
         ThymeleafLanguageDriver thymeleafLanguageDriver(ThymeleafLanguageDriverConfig config) {
@@ -129,5 +128,22 @@ public class MybatisPlusLanguageDriverAutoConfiguration {
         public ThymeleafLanguageDriverConfig thymeleafLanguageDriverConfig() {
         public ThymeleafLanguageDriverConfig thymeleafLanguageDriverConfig() {
             return ThymeleafLanguageDriverConfig.newInstance();
             return ThymeleafLanguageDriverConfig.newInstance();
         }
         }
+
+        // This class provides to avoid the https://github.com/spring-projects/spring-boot/issues/21626 as workaround.
+        @SuppressWarnings("unused")
+        private static class MetadataThymeleafLanguageDriverConfig extends ThymeleafLanguageDriverConfig {
+
+            @ConfigurationProperties(CONFIGURATION_PROPERTY_PREFIX + ".thymeleaf.dialect")
+            @Override
+            public DialectConfig getDialect() {
+                return super.getDialect();
+            }
+
+            @ConfigurationProperties(CONFIGURATION_PROPERTY_PREFIX + ".thymeleaf.template-file")
+            @Override
+            public TemplateFileConfig getTemplateFile() {
+                return super.getTemplateFile();
+            }
+        }
     }
     }
 }
 }

+ 1 - 2
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/autoconfigure/MybatisPlusProperties.java

@@ -119,8 +119,7 @@ public class MybatisPlusProperties {
 
 
     public Resource[] resolveMapperLocations() {
     public Resource[] resolveMapperLocations() {
         return Stream.of(Optional.ofNullable(this.mapperLocations).orElse(new String[0]))
         return Stream.of(Optional.ofNullable(this.mapperLocations).orElse(new String[0]))
-            .flatMap(location -> Stream.of(getResources(location)))
-            .toArray(Resource[]::new);
+            .flatMap(location -> Stream.of(getResources(location))).toArray(Resource[]::new);
     }
     }
 
 
     private Resource[] getResources(String location) {
     private Resource[] getResources(String location) {

+ 11 - 11
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/autoconfigure/SpringBootVFS.java

@@ -46,17 +46,8 @@ public class SpringBootVFS extends VFS {
         return true;
         return true;
     }
     }
 
 
-    @Override
-    protected List<String> list(URL url, String path) throws IOException {
-        String urlString = url.toString();
-        String baseUrlString = urlString.endsWith("/") ? urlString : urlString.concat("/");
-        Resource[] resources = resourceResolver.getResources(baseUrlString + "**/*.class");
-        return Stream.of(resources)
-            .map(resource -> preserveSubpackageName(baseUrlString, resource, path))
-            .collect(Collectors.toList());
-    }
-
-    private String preserveSubpackageName(final String baseUrlString, final Resource resource, final String rootPath) {
+    private static String preserveSubpackageName(final String baseUrlString, final Resource resource,
+                                                 final String rootPath) {
         try {
         try {
             return rootPath + (rootPath.endsWith("/") ? "" : "/")
             return rootPath + (rootPath.endsWith("/") ? "" : "/")
                 + resource.getURL().toString().substring(baseUrlString.length());
                 + resource.getURL().toString().substring(baseUrlString.length());
@@ -64,4 +55,13 @@ public class SpringBootVFS extends VFS {
             throw new UncheckedIOException(e);
             throw new UncheckedIOException(e);
         }
         }
     }
     }
+
+    @Override
+    protected List<String> list(URL url, String path) throws IOException {
+        String urlString = url.toString();
+        String baseUrlString = urlString.endsWith("/") ? urlString : urlString.concat("/");
+        Resource[] resources = resourceResolver.getResources(baseUrlString + "**/*.class");
+        return Stream.of(resources).map(resource -> preserveSubpackageName(baseUrlString, resource, path))
+            .collect(Collectors.toList());
+    }
 }
 }