Browse Source

增加通过mysql.engine配置指定mysql表引擎

zhou-hao 7 years ago
parent
commit
9e9cb53641

+ 11 - 1
hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/SystemInitializeAutoConfiguration.java

@@ -44,7 +44,9 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.core.Ordered;
 import org.springframework.core.annotation.AnnotationUtils;
 import org.springframework.core.annotation.Order;
+import org.springframework.core.env.Environment;
 import org.springframework.util.ClassUtils;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.PostConstruct;
 import javax.sql.DataSource;
@@ -77,6 +79,9 @@ public class SystemInitializeAutoConfiguration implements CommandLineRunner, Bea
 
     private List<DynamicScriptEngine> engines;
 
+    @Autowired
+    private Environment environment;
+
     @PostConstruct
     public void init() {
         engines = Stream.of("js", "groovy")
@@ -121,8 +126,13 @@ public class SystemInitializeAutoConfiguration implements CommandLineRunner, Bea
                 metaData.setParser(new OracleTableMetaParser(sqlExecutor));
                 break;
             case mysql:
+                String engine = environment.getProperty("mysql.engine");
+
                 metaData = new MysqlRDBDatabaseMetaData();
                 metaData.setParser(new MysqlTableMetaParser(sqlExecutor));
+                if (StringUtils.hasText(engine)) {
+                    ((MysqlRDBDatabaseMetaData) metaData).setEngine(engine);
+                }
                 break;
             default:
                 metaData = new H2RDBDatabaseMetaData();
@@ -146,7 +156,7 @@ public class SystemInitializeAutoConfiguration implements CommandLineRunner, Bea
     }
 
     @Override
-    public Object postProcessAfterInitialization(Object bean, String beanName)  {
+    public Object postProcessAfterInitialization(Object bean, String beanName) {
         ScriptScope scope;
         if (bean instanceof Service) {
             addGlobalVariable(beanName, bean);