소스 검색

结构优化

mxd 4 년 전
부모
커밋
d0b6918d95

+ 51 - 40
src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java

@@ -31,6 +31,7 @@ import org.ssssssss.magicapi.adapter.DialectAdapter;
 import org.ssssssss.magicapi.cache.DefaultSqlCache;
 import org.ssssssss.magicapi.cache.SqlCache;
 import org.ssssssss.magicapi.config.*;
+import org.ssssssss.magicapi.controller.*;
 import org.ssssssss.magicapi.dialect.*;
 import org.ssssssss.magicapi.interceptor.RequestInterceptor;
 import org.ssssssss.magicapi.interceptor.SQLInterceptor;
@@ -39,8 +40,7 @@ import org.ssssssss.magicapi.modules.*;
 import org.ssssssss.magicapi.provider.*;
 import org.ssssssss.magicapi.provider.impl.*;
 import org.ssssssss.magicapi.utils.ClassScanner;
-import org.ssssssss.script.MagicModuleLoader;
-import org.ssssssss.script.MagicPackageLoader;
+import org.ssssssss.script.MagicResourceLoader;
 import org.ssssssss.script.MagicScript;
 import org.ssssssss.script.MagicScriptEngine;
 import org.ssssssss.script.functions.ExtensionMethod;
@@ -116,6 +116,9 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 	@Autowired
 	GroupServiceProvider groupServiceProvider;
 
+	@Autowired
+	FunctionServiceProvider functionServiceProvider;
+
 	@Autowired
 	MagicDynamicDataSource magicDynamicDataSource;
 
@@ -259,6 +262,22 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 		return handlerMapping;
 	}
 
+
+	@Bean
+	@ConditionalOnMissingBean(FunctionServiceProvider.class)
+	public FunctionServiceProvider functionServiceProvider(MagicDynamicDataSource dynamicDataSource){
+		return new DefaultFunctionServiceProvider(dynamicDataSource.getDataSource(properties.getDatasource()).getJdbcTemplate());
+	}
+
+	/**
+	 * 注入分组存储service
+	 */
+	@Bean
+	@ConditionalOnMissingBean(GroupServiceProvider.class)
+	public GroupServiceProvider groupServiceProvider(MagicDynamicDataSource dynamicDataSource) {
+		return new DefaultGroupServiceProvider(dynamicDataSource.getDataSource(properties.getDatasource()).getJdbcTemplate());
+	}
+
 	/**
 	 * 注入接口存储service
 	 */
@@ -269,13 +288,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 		return new DefaultApiServiceProvider(dynamicDataSource.getDataSource(properties.getDatasource()).getJdbcTemplate());
 	}
 
-	/**
-	 * 注入分组存储service
-	 */
-	@Bean
-	public GroupServiceProvider GroupServiceProvider(MagicDynamicDataSource dynamicDataSource) {
-		return new DefaultGroupServiceProvider(dynamicDataSource.getDataSource(properties.getDatasource()).getJdbcTemplate());
-	}
+
 
 	/**
 	 * 注入API调用Service
@@ -337,6 +350,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 		dialectAdapter.add(new DB2Dialect());
 		dialectAdapter.add(new SQLServerDialect());
 		dialectAdapter.add(new SQLServer2005Dialect());
+		dialectAdapter.add(new DmDialect());
 		dialects.forEach(dialectAdapter::add);
 		sqlModule.setDialectAdapter(dialectAdapter);
 		return sqlModule;
@@ -347,7 +361,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 	 */
 	private void setupMagicModules(ResultProvider resultProvider, List<MagicModule> magicModules, List<ExtensionMethod> extensionMethods) {
 		// 设置脚本import时 class加载策略
-		MagicModuleLoader.setClassLoader((className) -> {
+		MagicResourceLoader.setClassLoader((className) -> {
 			try {
 				return springContext.getBean(className);
 			} catch (Exception e) {
@@ -361,31 +375,31 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 			}
 		});
 		logger.info("注册模块:{} -> {}", "log", Logger.class);
-		MagicModuleLoader.addModule("log", LoggerFactory.getLogger(MagicScript.class));
+		MagicResourceLoader.addModule("log", LoggerFactory.getLogger(MagicScript.class));
 		List<String> importModules = properties.getAutoImportModuleList();
 		logger.info("注册模块:{} -> {}", "env", EnvModule.class);
-		MagicModuleLoader.addModule("env", new EnvModule(environment));
+		MagicResourceLoader.addModule("env", new EnvModule(environment));
 		logger.info("注册模块:{} -> {}", "request", RequestModule.class);
-		MagicModuleLoader.addModule("request", new RequestModule());
+		MagicResourceLoader.addModule("request", new RequestModule());
 		logger.info("注册模块:{} -> {}", "response", ResponseModule.class);
-		MagicModuleLoader.addModule("response", new ResponseModule(resultProvider));
+		MagicResourceLoader.addModule("response", new ResponseModule(resultProvider));
 		logger.info("注册模块:{} -> {}", "assert", AssertModule.class);
-		MagicModuleLoader.addModule("assert", AssertModule.class);
+		MagicResourceLoader.addModule("assert", AssertModule.class);
 		for (MagicModule module : magicModules) {
 			logger.info("注册模块:{} -> {}", module.getModuleName(), module.getClass());
-			MagicModuleLoader.addModule(module.getModuleName(), module);
+			MagicResourceLoader.addModule(module.getModuleName(), module);
 		}
-		Set<String> moduleNames = MagicModuleLoader.getModuleNames();
+		Set<String> moduleNames = MagicResourceLoader.getModuleNames();
 		for (String moduleName : moduleNames) {
 			if (importModules.contains(moduleName)) {
 				logger.info("自动导入模块:{}", moduleName);
-				MagicScriptEngine.addDefaultImport(moduleName, MagicModuleLoader.loadModule(moduleName));
+				MagicScriptEngine.addDefaultImport(moduleName, MagicResourceLoader.loadModule(moduleName));
 			}
 		}
 		List<String> importPackages = properties.getAutoImportPackageList();
 		for (String importPackage : importPackages) {
 			logger.info("自动导包:{}", importPackage);
-			MagicPackageLoader.addPackage(importPackage);
+			MagicResourceLoader.addPackage(importPackage);
 		}
 		for (ExtensionMethod extension : extensionMethods) {
 			List<Class<?>> supports = extension.supports();
@@ -397,11 +411,28 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 	}
 
 
-	private MagicConfiguration createMagicConfiguration(ApiServiceProvider apiServiceProvider, GroupServiceProvider groupServiceProvider, MappingHandlerMapping mappingHandlerMapping) {
+	/**
+	 * 注入动态数据源
+	 */
+	@Bean
+	@ConditionalOnMissingBean(MagicDynamicDataSource.class)
+	public MagicDynamicDataSource magicDynamicDataSource(DataSource dataSource) {
+		MagicDynamicDataSource dynamicDataSource = new MagicDynamicDataSource();
+		dynamicDataSource.put(dataSource);
+		return dynamicDataSource;
+	}
+
+	@Bean
+	public MagicConfiguration magicConfiguration() {
+		setupSpringSecurity();
+		AsyncCall.setThreadPoolExecutorSize(properties.getThreadPoolExecutorSize());
+		// 设置模块和扩展方法
+		setupMagicModules(resultProvider, magicModules, extensionMethods);
 		MagicConfiguration configuration = new MagicConfiguration();
 		configuration.setMagicApiService(apiServiceProvider);
 		configuration.setGroupServiceProvider(groupServiceProvider);
 		configuration.setMappingHandlerMapping(mappingHandlerMapping);
+		configuration.setFunctionServiceProvider(functionServiceProvider);
 		SecurityConfig securityConfig = properties.getSecurityConfig();
 		configuration.setUsername(securityConfig.getUsername());
 		configuration.setPassword(securityConfig.getPassword());
@@ -441,27 +472,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 			logger.info("注册请求拦截器:{}", interceptor.getClass());
 			configuration.addRequestInterceptor(interceptor);
 		});
-		return configuration;
-	}
-
-	/**
-	 * 注入动态数据源
-	 */
-	@Bean
-	@ConditionalOnMissingBean(MagicDynamicDataSource.class)
-	public MagicDynamicDataSource magicDynamicDataSource(DataSource dataSource) {
-		MagicDynamicDataSource dynamicDataSource = new MagicDynamicDataSource();
-		dynamicDataSource.put(dataSource);
-		return dynamicDataSource;
-	}
 
-	@Bean
-	public MagicConfiguration magicConfiguration() {
-		setupSpringSecurity();
-		AsyncCall.setThreadPoolExecutorSize(properties.getThreadPoolExecutorSize());
-		// 设置模块和扩展方法
-		setupMagicModules(resultProvider, magicModules, extensionMethods);
-		MagicConfiguration configuration = createMagicConfiguration(apiServiceProvider, groupServiceProvider, mappingHandlerMapping);
 		if (this.properties.isBanner()) {
 			configuration.printBanner();
 		}

+ 1 - 1
src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIProperties.java

@@ -3,7 +3,7 @@ package org.ssssssss.magicapi.spring.boot.starter;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
-import org.ssssssss.magicapi.config.RequestHandler;
+import org.ssssssss.magicapi.controller.RequestHandler;
 
 import java.util.Arrays;
 import java.util.Collections;