Selaa lähdekoodia

在线定义函数

mxd 4 vuotta sitten
vanhempi
sitoutus
2a56519aed

+ 11 - 3
src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java

@@ -267,7 +267,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 
 	@Bean
 	@ConditionalOnMissingBean(FunctionServiceProvider.class)
-	public FunctionServiceProvider functionServiceProvider(MagicDynamicDataSource dynamicDataSource){
+	public FunctionServiceProvider functionServiceProvider(MagicDynamicDataSource dynamicDataSource) {
 		return new DefaultFunctionServiceProvider(dynamicDataSource.getDataSource(properties.getDatasource()).getJdbcTemplate());
 	}
 
@@ -291,7 +291,6 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 	}
 
 
-
 	/**
 	 * 注入API调用Service
 	 */
@@ -457,7 +456,8 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 					new MagicAPIController(configuration),
 					new MagicConfigController(configuration),
 					new MagicWorkbenchController(configuration),
-					new MagicGroupController(configuration)
+					new MagicGroupController(configuration),
+					new MagicFunctionController(configuration)
 			);
 			controllers.forEach(item -> {
 				Method[] methods = item.getClass().getDeclaredMethods();
@@ -479,6 +479,14 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 		if (this.properties.isBanner()) {
 			configuration.printBanner();
 		}
+		MagicFunctionManager magicFunctionManager = new MagicFunctionManager(groupServiceProvider, functionServiceProvider);
+		configuration.setMagicFunctionManager(magicFunctionManager);
+		// 注册函数加载器
+		magicFunctionManager.registerFunctionLoader();
+		// 注册所有函数
+		magicFunctionManager.registerAllFunction();
+		// 自动刷新
+		magicFunctionManager.enableRefresh(properties.getRefreshInterval());
 		mappingHandlerMapping.setHandler(new RequestHandler(configuration));
 		mappingHandlerMapping.setRequestMappingHandlerMapping(requestMappingHandlerMapping);
 		mappingHandlerMapping.setMagicApiService(apiServiceProvider);