From a44c7361c6443cb92be227a174d82f2a219bc85c Mon Sep 17 00:00:00 2001 From: zhangzhuo Date: Tue, 26 Jan 2021 14:13:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 31 +++++++------- .../example/main/config/PluginBeanConfig.java | 11 +---- .../integration-tkmybatis-main/pom.xml | 11 ++++- .../main/config/PluginConfiguration.java | 36 ++++++++--------- .../java/com/tkmybatis/plugin/Service.java | 40 +++++++++++++++++++ .../plugin/config/TkMybatisPlusConfig.java | 2 +- .../plugin/mapper/CountryMapper.java | 3 +- .../plugin/rest/CountryController.java | 13 +++--- .../gitee/starblues/realize/PluginUtils.java | 4 +- 9 files changed, 97 insertions(+), 54 deletions(-) create mode 100644 example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/Service.java diff --git a/README.md b/README.md index f0e04f4..dc5d2e9 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,23 @@ # springboot插件式开发框架 ### 介绍 -此框架可在springboot项目上开发出用于扩展项目的插件,可在插件模块中单独定义接口、静态文件、mybatis-xml等扩展功能。 +此框架可在SpringBoot项目上开发出用于扩展项目的插件,可在插件模块中单独定义接口、静态文件、mybatis-xml等扩展功能。 ### 核心功能 -1. 插件配置式插拔于springboot项目。 -2. 在springboot上可以进行插件式开发, 扩展性极强, 可以针对不同项目开发不同插件, 进行不同插件jar包的部署。 -3. 可通过配置文件指定要启用或者禁用插件。 -4. 支持上传插件和插件配置文件到服务器, 并且无需重启主程序, 动态部署插件、更新插件。 -5. 支持查看插件运行状态, 查看插件安装位置。 -6. 无需重启主程序, 动态的安装插件、卸载插件、启用插件、停止插件、备份插件、删除插件。 -7. 在插件应用模块上可以使用Spring注解定义组件, 进行依赖注入。 -8. 支持在插件中开发Rest接口。 -9. 支持在插件中单独定义持久层访问等需求。 -10. 可以遵循主程序提供的插件接口开发任意扩展功能。 -11. 插件可以自定义配置文件。目前只支持yml文件。 -12. 支持自定义扩展开发接口, 使用者可以在预留接口上扩展额外功能。 -13. 支持插件之间的通信。 -14. 支持插件中使用事务注解。 -15. 支持Swagger。(仅支持首次启动初始化的插件) +- 插件配置式插拔于springboot项目。 +- 在springboot上可以进行插件式开发, 扩展性极强, 可以针对不同项目开发不同插件, 进行不同插件jar包的部署。 +- 可通过配置文件指定要启用或者禁用插件。 +- 支持上传插件和插件配置文件到服务器, 并且无需重启主程序, 动态部署插件、更新插件。 +- 支持查看插件运行状态, 查看插件安装位置。 +- 无需重启主程序, 动态的安装插件、卸载插件、启用插件、停止插件、备份插件、删除插件。 +- 在插件应用模块上可以使用Spring注解定义组件, 进行依赖注入。 +- 支持在插件中开发Rest接口。 +- 支持在插件中单独定义持久层访问等需求。 +- 可以遵循主程序提供的插件接口开发任意扩展功能。 +- 插件可以根据生产和开发环境自定义独立的配置文件。目前只支持yml文件。 +- 支持自定义扩展开发接口, 使用者可以在预留接口上扩展额外功能。 +- 支持插件之间的通信。 +- 支持插件接口文档: `Swagger`、`SpringDoc`。 ### 扩展包功能 1. `SpringBoot-Mybatis`扩展包 diff --git a/example/basic-example/basic-example-main/src/main/java/com/basic/example/main/config/PluginBeanConfig.java b/example/basic-example/basic-example-main/src/main/java/com/basic/example/main/config/PluginBeanConfig.java index 4f486d3..d792e02 100644 --- a/example/basic-example/basic-example-main/src/main/java/com/basic/example/main/config/PluginBeanConfig.java +++ b/example/basic-example/basic-example-main/src/main/java/com/basic/example/main/config/PluginBeanConfig.java @@ -11,6 +11,7 @@ import org.springdoc.core.SpringDocUtils; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; /** * 插件集成配置 @@ -19,6 +20,7 @@ import org.springframework.context.annotation.Configuration; * @version 1.0 */ @Configuration +@Import(SpringDocControllerProcessor.class) public class PluginBeanConfig { @@ -35,14 +37,5 @@ public class PluginBeanConfig { return autoPluginApplication; } - /** - * 集成 SpringDoc 的插件刷新 - * @param applicationContext ApplicationContext - * @return SpringDocControllerProcessor - */ - @Bean - public SpringDocControllerProcessor springDocControllerProcessor(ApplicationContext applicationContext){ - return new SpringDocControllerProcessor(applicationContext); - } } diff --git a/example/integration-tkmybatis/integration-tkmybatis-main/pom.xml b/example/integration-tkmybatis/integration-tkmybatis-main/pom.xml index 87e5b81..2fa3f54 100644 --- a/example/integration-tkmybatis/integration-tkmybatis-main/pom.xml +++ b/example/integration-tkmybatis/integration-tkmybatis-main/pom.xml @@ -26,8 +26,8 @@ 2.1.5 - 2.4.0-RELEASE - 2.4.0-RELEASE + 2.3-RELEASE + 2.3-RELEASE 2.7.0 1.6 @@ -71,6 +71,13 @@ ${mapper-spring-boot-starter.version} + + tk.mybatis + mapper + 4.0.1 + + + com.github.pagehelper pagehelper diff --git a/example/integration-tkmybatis/integration-tkmybatis-main/src/main/java/com/mybatisplus/main/config/PluginConfiguration.java b/example/integration-tkmybatis/integration-tkmybatis-main/src/main/java/com/mybatisplus/main/config/PluginConfiguration.java index a2f3695..cd2b4a3 100644 --- a/example/integration-tkmybatis/integration-tkmybatis-main/src/main/java/com/mybatisplus/main/config/PluginConfiguration.java +++ b/example/integration-tkmybatis/integration-tkmybatis-main/src/main/java/com/mybatisplus/main/config/PluginConfiguration.java @@ -73,24 +73,24 @@ public class PluginConfiguration extends DefaultIntegrationConfiguration { return "backupPlugin"; } - /** - * 重写插件RestController请求的路径前缀 - * @return String - */ - @Override - public String pluginRestPathPrefix() { - return "/api/plugin"; - } - - /** - * 重写是否启用插件id作为RestController请求的路径前缀。 - * 启动则插件id会作为二级路径前缀。即: /api/plugin/pluginId/** - * @return String - */ - @Override - public boolean enablePluginIdRestPathPrefix() { - return true; - } +// /** +// * 重写插件RestController请求的路径前缀 +// * @return String +// */ +// @Override +// public String pluginRestPathPrefix() { +// return "/api/plugin"; +// } +// +// /** +// * 重写是否启用插件id作为RestController请求的路径前缀。 +// * 启动则插件id会作为二级路径前缀。即: /api/plugin/pluginId/** +// * @return String +// */ +// @Override +// public boolean enablePluginIdRestPathPrefix() { +// return true; +// } public String getRunMode() { return runMode; diff --git a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/Service.java b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/Service.java new file mode 100644 index 0000000..7f00239 --- /dev/null +++ b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/Service.java @@ -0,0 +1,40 @@ +package com.tkmybatis.plugin; + +import com.github.pagehelper.PageHelper; +import com.tkmybatis.plugin.entity.Country; +import com.tkmybatis.plugin.mapper.CountryMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +/** + * @author starBlues + * @version 1.0 + */ +@org.springframework.stereotype.Service +@Transactional +public class Service { + + + @Autowired + private CountryMapper countryMapper; + + public List getAll(){ + PageHelper.startPage(1, 1); + return countryMapper.selectAll(); + } + + @Transactional + public Country getOne(){ + Country country = new Country(); + country.setId(1); + return countryMapper.selectOne(country); + } + + public List getXmlAll(){ + return countryMapper.getAll(); + } + +} diff --git a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/config/TkMybatisPlusConfig.java b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/config/TkMybatisPlusConfig.java index bf8b5ca..0b78816 100644 --- a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/config/TkMybatisPlusConfig.java +++ b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/config/TkMybatisPlusConfig.java @@ -15,7 +15,7 @@ import java.util.Set; * @version 1.0 * @since 2020-12-14 */ -@ConfigDefinition +@Component public class TkMybatisPlusConfig implements SpringBootTkMybatisConfig { @Override diff --git a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/mapper/CountryMapper.java b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/mapper/CountryMapper.java index 13445c5..4446341 100644 --- a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/mapper/CountryMapper.java +++ b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/mapper/CountryMapper.java @@ -1,6 +1,7 @@ package com.tkmybatis.plugin.mapper; import com.tkmybatis.plugin.entity.Country; +import tk.mybatis.mapper.common.BaseMapper; import tk.mybatis.mapper.common.Mapper; import java.util.List; @@ -11,7 +12,7 @@ import java.util.List; * @since 2020-12-18 */ @org.apache.ibatis.annotations.Mapper -public interface CountryMapper extends Mapper { +public interface CountryMapper extends BaseMapper { List getAll(); diff --git a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/rest/CountryController.java b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/rest/CountryController.java index 2cea249..9256ec4 100644 --- a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/rest/CountryController.java +++ b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/rest/CountryController.java @@ -1,6 +1,7 @@ package com.tkmybatis.plugin.rest; import com.github.pagehelper.PageHelper; +import com.tkmybatis.plugin.Service; import com.tkmybatis.plugin.entity.Country; import com.tkmybatis.plugin.mapper.CountryMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -19,18 +20,20 @@ import java.util.List; public class CountryController { @Autowired - private CountryMapper countryMapper; - + private Service service; @GetMapping("all") public List getAll(){ - PageHelper.startPage(1, 1); - return countryMapper.selectAll(); + return service.getAll(); } + @GetMapping("one") + public Country getOne(){ + return service.getOne(); + } @GetMapping("xml-all") public List getXmlAll(){ - return countryMapper.getAll(); + return service.getAll(); } } diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/realize/PluginUtils.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/realize/PluginUtils.java index 2d04031..3dc5193 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/realize/PluginUtils.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/realize/PluginUtils.java @@ -51,7 +51,7 @@ public class PluginUtils { /** - * 获取bean名称得到主程序中的bean + * 通过 bean名称得到主程序中的bean * @param name bean 名称 * @param bean 类型 * @return bean @@ -75,7 +75,7 @@ public class PluginUtils { } /** - * 通过接口或者抽象类型得到主程序中的多个实现类型 + * 通过接口或者抽象类类型得到主程序中的多个实现对象 * @param aClass bean 类型 * @param bean 类型 * @return bean -- Gitee From b28d4360c9b715f054be150d7fcc951b85aaae27 Mon Sep 17 00:00:00 2001 From: zhangzhuo Date: Wed, 27 Jan 2021 09:16:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extension/mybatis/MybatisProcessor.java | 4 ++-- .../mybatisplus/MybatisPlusProcessor.java | 4 ++-- .../mybatis/tkmyabtis/TkMybatisProcessor.java | 4 ++-- .../PluginResourceResolverProcess.java | 4 ++-- .../thymeleaf/ThymeleafProcessor.java | 4 ++-- .../starblues/extension/ExtensionFactory.java | 4 ++-- .../support/SpringDocControllerProcessor.java | 6 +++--- .../starblues/factory/PluginRegistryInfo.java | 1 + .../pipe/PluginConfigBeanPipeProcessor.java | 4 ++-- .../pipe/bean/PluginBeanRegistrar.java | 1 + .../PluginOneselfStartEventProcessor.java | 4 ++-- .../listener/SwaggerListeningListener.java | 6 ++---- .../operator/PluginOperatorWrapper.java | 5 ++--- .../integration/user/DefaultPluginUser.java | 6 +++--- .../gitee/starblues/realize/PluginUtils.java | 4 ++-- .../com/gitee/starblues/utils/ClassUtils.java | 1 + ...ginBeanUtils.java => SpringBeanUtils.java} | 20 ++++++++++++++----- 17 files changed, 46 insertions(+), 36 deletions(-) rename springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/{PluginBeanUtils.java => SpringBeanUtils.java} (80%) diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MybatisProcessor.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MybatisProcessor.java index 4b18814..bcbd6c0 100644 --- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MybatisProcessor.java +++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MybatisProcessor.java @@ -2,7 +2,7 @@ package com.gitee.starblues.extension.mybatis; import com.gitee.starblues.factory.PluginRegistryInfo; import com.gitee.starblues.factory.process.pipe.bean.PluginBeanRegistrarExtend; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.mapping.DatabaseIdProvider; import org.apache.ibatis.plugin.Interceptor; @@ -35,7 +35,7 @@ public class MybatisProcessor implements PluginBeanRegistrarExtend { @Override public void registry(PluginRegistryInfo pluginRegistryInfo) throws Exception { - SpringBootMybatisConfig config = PluginBeanUtils.getObjectByInterfaceClass( + SpringBootMybatisConfig config = SpringBeanUtils.getObjectByInterfaceClass( pluginRegistryInfo.getConfigSingletons(), SpringBootMybatisConfig.class); if(config == null){ diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/mybatisplus/MybatisPlusProcessor.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/mybatisplus/MybatisPlusProcessor.java index 9a7d787..32f808d 100644 --- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/mybatisplus/MybatisPlusProcessor.java +++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/mybatisplus/MybatisPlusProcessor.java @@ -11,7 +11,7 @@ import com.gitee.starblues.extension.mybatis.PluginFollowCoreConfig; import com.gitee.starblues.extension.mybatis.PluginResourceFinder; import com.gitee.starblues.factory.PluginRegistryInfo; import com.gitee.starblues.factory.process.pipe.bean.PluginBeanRegistrarExtend; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.mapping.DatabaseIdProvider; import org.apache.ibatis.plugin.Interceptor; @@ -45,7 +45,7 @@ public class MybatisPlusProcessor implements PluginBeanRegistrarExtend { @Override public void registry(PluginRegistryInfo pluginRegistryInfo) throws Exception { - SpringBootMybatisPlusConfig config = PluginBeanUtils.getObjectByInterfaceClass( + SpringBootMybatisPlusConfig config = SpringBeanUtils.getObjectByInterfaceClass( pluginRegistryInfo.getConfigSingletons(), SpringBootMybatisPlusConfig.class); if(config == null){ diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/tkmyabtis/TkMybatisProcessor.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/tkmyabtis/TkMybatisProcessor.java index c89e44b..e735168 100644 --- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/tkmyabtis/TkMybatisProcessor.java +++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/tkmyabtis/TkMybatisProcessor.java @@ -6,7 +6,7 @@ import com.gitee.starblues.extension.mybatis.PluginResourceFinder; import com.gitee.starblues.extension.mybatis.SpringBootMybatisExtension; import com.gitee.starblues.factory.PluginRegistryInfo; import com.gitee.starblues.factory.process.pipe.bean.PluginBeanRegistrarExtend; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.mapping.DatabaseIdProvider; import org.apache.ibatis.plugin.Interceptor; @@ -46,7 +46,7 @@ public class TkMybatisProcessor implements PluginBeanRegistrarExtend { @Override public void registry(PluginRegistryInfo pluginRegistryInfo) throws Exception { - SpringBootTkMybatisConfig config = PluginBeanUtils.getObjectByInterfaceClass( + SpringBootTkMybatisConfig config = SpringBeanUtils.getObjectByInterfaceClass( pluginRegistryInfo.getConfigSingletons(), SpringBootTkMybatisConfig.class); if(config == null){ diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/src/main/java/com/gitee/starblues/extension/resources/PluginResourceResolverProcess.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/src/main/java/com/gitee/starblues/extension/resources/PluginResourceResolverProcess.java index 60acb2d..bf1c431 100644 --- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/src/main/java/com/gitee/starblues/extension/resources/PluginResourceResolverProcess.java +++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/src/main/java/com/gitee/starblues/extension/resources/PluginResourceResolverProcess.java @@ -4,7 +4,7 @@ import com.gitee.starblues.extension.resources.resolver.PluginResourceResolver; import com.gitee.starblues.factory.PluginRegistryInfo; import com.gitee.starblues.factory.process.post.PluginPostProcessorExtend; import com.gitee.starblues.utils.OrderPriority; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +48,7 @@ public class PluginResourceResolverProcess implements PluginPostProcessorExtend } String pluginId = pluginRegistryInfo.getPluginWrapper().getPluginId(); try { - StaticResourceConfig config = PluginBeanUtils.getObjectByInterfaceClass( + StaticResourceConfig config = SpringBeanUtils.getObjectByInterfaceClass( pluginRegistryInfo.getConfigSingletons(), StaticResourceConfig.class); if(config == null){ diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/src/main/java/com/gitee/starblues/extension/resources/thymeleaf/ThymeleafProcessor.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/src/main/java/com/gitee/starblues/extension/resources/thymeleaf/ThymeleafProcessor.java index ac0125c..995d991 100644 --- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/src/main/java/com/gitee/starblues/extension/resources/thymeleaf/ThymeleafProcessor.java +++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/src/main/java/com/gitee/starblues/extension/resources/thymeleaf/ThymeleafProcessor.java @@ -3,7 +3,7 @@ package com.gitee.starblues.extension.resources.thymeleaf; import com.gitee.starblues.factory.PluginRegistryInfo; import com.gitee.starblues.factory.process.pipe.PluginPipeProcessorExtend; import com.gitee.starblues.utils.OrderPriority; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.support.GenericApplicationContext; @@ -50,7 +50,7 @@ public class ThymeleafProcessor implements PluginPipeProcessorExtend { if(springTemplateEngine == null){ return; } - SpringBootThymeleafConfig config = PluginBeanUtils.getObjectByInterfaceClass( + SpringBootThymeleafConfig config = SpringBeanUtils.getObjectByInterfaceClass( pluginRegistryInfo.getConfigSingletons(), SpringBootThymeleafConfig.class); if(config == null){ diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/extension/ExtensionFactory.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/extension/ExtensionFactory.java index 90d438d..a3b6fd3 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/extension/ExtensionFactory.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/extension/ExtensionFactory.java @@ -1,6 +1,6 @@ package com.gitee.starblues.extension; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; @@ -46,7 +46,7 @@ public class ExtensionFactory { * @return PluginControllerProcessorExtend 的实现对象集合 */ public static List getPluginControllerProcessorExtend(ApplicationContext mainApplicationContext){ - return PluginBeanUtils.getPluginBeans(mainApplicationContext, + return SpringBeanUtils.getBeans(mainApplicationContext, PluginControllerProcessorExtend.class); } diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/extension/support/SpringDocControllerProcessor.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/extension/support/SpringDocControllerProcessor.java index 04337cd..b8c962c 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/extension/support/SpringDocControllerProcessor.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/extension/support/SpringDocControllerProcessor.java @@ -3,7 +3,7 @@ package com.gitee.starblues.extension.support; import com.gitee.starblues.extension.PluginControllerProcessorExtend; import com.gitee.starblues.factory.process.post.bean.model.ControllerWrapper; import com.gitee.starblues.utils.ClassUtils; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.springdoc.api.AbstractOpenApiResource; import org.springdoc.core.OpenAPIService; import org.springframework.context.ApplicationContext; @@ -28,7 +28,7 @@ public class SpringDocControllerProcessor implements PluginControllerProcessorEx @Override public void initialize() { - AbstractOpenApiResource openApiResource = PluginBeanUtils.getExistBean(applicationContext, AbstractOpenApiResource.class); + AbstractOpenApiResource openApiResource = SpringBeanUtils.getExistBean(applicationContext, AbstractOpenApiResource.class); if(openApiResource == null){ return; } @@ -38,7 +38,7 @@ public class SpringDocControllerProcessor implements PluginControllerProcessorEx } catch (IllegalAccessException e) { restControllers = null; } - openAPIService = PluginBeanUtils.getExistBean(applicationContext, OpenAPIService.class); + openAPIService = SpringBeanUtils.getExistBean(applicationContext, OpenAPIService.class); } @Override diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/PluginRegistryInfo.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/PluginRegistryInfo.java index 4c7a623..7577217 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/PluginRegistryInfo.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/PluginRegistryInfo.java @@ -215,6 +215,7 @@ public class PluginRegistryInfo { /** * 添加插件中的配置对象 + * @return 配置的实现对象 */ public Set getConfigSingletons(){ return Collections.unmodifiableSet(configSingletonObjects); diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/PluginConfigBeanPipeProcessor.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/PluginConfigBeanPipeProcessor.java index 26aa9bf..39a4646 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/PluginConfigBeanPipeProcessor.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/PluginConfigBeanPipeProcessor.java @@ -2,7 +2,7 @@ package com.gitee.starblues.factory.process.pipe; import com.gitee.starblues.factory.PluginRegistryInfo; import com.gitee.starblues.realize.ConfigBean; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,7 +26,7 @@ public class PluginConfigBeanPipeProcessor implements PluginPipeProcessor{ @Override public void registry(PluginRegistryInfo pluginRegistryInfo) throws Exception { - List pluginBeans = PluginBeanUtils.getPluginBeans(pluginRegistryInfo.getPluginApplicationContext(), + List pluginBeans = SpringBeanUtils.getBeans(pluginRegistryInfo.getPluginApplicationContext(), ConfigBean.class); if(pluginBeans.isEmpty()){ return; diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/PluginBeanRegistrar.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/PluginBeanRegistrar.java index 8168c17..97a8071 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/PluginBeanRegistrar.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/PluginBeanRegistrar.java @@ -12,6 +12,7 @@ public interface PluginBeanRegistrar { /** * 处理该插件的注册 + * @param pluginRegistryInfo 插件注册的信息 * @throws Exception 处理异常 */ void registry(PluginRegistryInfo pluginRegistryInfo) throws Exception; diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/post/bean/PluginOneselfStartEventProcessor.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/post/bean/PluginOneselfStartEventProcessor.java index 26eff74..1eb90be 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/post/bean/PluginOneselfStartEventProcessor.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/post/bean/PluginOneselfStartEventProcessor.java @@ -5,7 +5,7 @@ import com.gitee.starblues.factory.process.post.PluginPostProcessor; import com.gitee.starblues.realize.BasePlugin; import com.gitee.starblues.realize.OneselfListener; import com.gitee.starblues.utils.CommonUtils; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.support.GenericApplicationContext; @@ -38,7 +38,7 @@ public class PluginOneselfStartEventProcessor implements PluginPostProcessor { BasePlugin basePlugin = pluginRegistryInfo.getBasePlugin(); try { GenericApplicationContext pluginApplicationContext = pluginRegistryInfo.getPluginApplicationContext(); - List oneselfListeners = PluginBeanUtils.getPluginBeans(pluginApplicationContext, OneselfListener.class); + List oneselfListeners = SpringBeanUtils.getBeans(pluginApplicationContext, OneselfListener.class); List saveOneselfListeners = new ArrayList<>(oneselfListeners.size()); oneselfListeners.stream() .filter(oneselfListener -> oneselfListener != null) diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/listener/SwaggerListeningListener.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/listener/SwaggerListeningListener.java index f7cc60a..beb56c3 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/listener/SwaggerListeningListener.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/listener/SwaggerListeningListener.java @@ -1,13 +1,11 @@ package com.gitee.starblues.integration.listener; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper; -import java.util.List; - /** * Swagger 监听事件 * @author starBlues @@ -37,7 +35,7 @@ public class SwaggerListeningListener implements PluginListener{ private void refresh(){ try { - DocumentationPluginsBootstrapper documentationPluginsBootstrapper = PluginBeanUtils.getExistBean(mainApplicationContext, + DocumentationPluginsBootstrapper documentationPluginsBootstrapper = SpringBeanUtils.getExistBean(mainApplicationContext, DocumentationPluginsBootstrapper.class); if(documentationPluginsBootstrapper != null){ documentationPluginsBootstrapper.stop(); diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java index b141800..1e81f88 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java @@ -4,9 +4,8 @@ import com.gitee.starblues.factory.process.pipe.PluginInfoContainers; import com.gitee.starblues.integration.IntegrationConfiguration; import com.gitee.starblues.integration.listener.PluginInitializerListener; import com.gitee.starblues.integration.operator.module.PluginInfo; -import com.gitee.starblues.realize.PluginUtils; import com.gitee.starblues.realize.UnRegistryValidator; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.pf4j.PluginWrapper; import org.pf4j.util.StringUtils; import org.slf4j.Logger; @@ -189,7 +188,7 @@ public class PluginOperatorWrapper implements PluginOperator{ pluginId); return; } - List unRegistryValidators = PluginBeanUtils.getPluginBeans(pluginApplicationContext, UnRegistryValidator.class); + List unRegistryValidators = SpringBeanUtils.getBeans(pluginApplicationContext, UnRegistryValidator.class); for (UnRegistryValidator unRegistryValidator : unRegistryValidators) { UnRegistryValidator.Result result = unRegistryValidator.verify(); if(result.isVerify()){ diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/user/DefaultPluginUser.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/user/DefaultPluginUser.java index da9d204..9eb3d24 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/user/DefaultPluginUser.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/integration/user/DefaultPluginUser.java @@ -1,7 +1,7 @@ package com.gitee.starblues.integration.user; import com.gitee.starblues.factory.process.pipe.PluginInfoContainers; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.pf4j.PluginManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,7 +85,7 @@ public class DefaultPluginUser implements PluginUser{ if(pluginApplicationContext == null){ return Collections.emptyList(); } - return PluginBeanUtils.getPluginBeans(pluginApplicationContext, aClass); + return SpringBeanUtils.getBeans(pluginApplicationContext, aClass); } @Override @@ -177,7 +177,7 @@ public class DefaultPluginUser implements PluginUser{ List result = new ArrayList<>(); for (GenericApplicationContext pluginApplicationContext : pluginApplicationContexts) { - List pluginBeans = PluginBeanUtils.getPluginBeans(pluginApplicationContext, aClass); + List pluginBeans = SpringBeanUtils.getBeans(pluginApplicationContext, aClass); if(!pluginBeans.isEmpty()){ result.addAll(pluginBeans); } diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/realize/PluginUtils.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/realize/PluginUtils.java index 3dc5193..d750e2a 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/realize/PluginUtils.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/realize/PluginUtils.java @@ -1,6 +1,6 @@ package com.gitee.starblues.realize; -import com.gitee.starblues.utils.PluginBeanUtils; +import com.gitee.starblues.utils.SpringBeanUtils; import org.pf4j.PluginDescriptor; import org.springframework.context.ApplicationContext; @@ -81,7 +81,7 @@ public class PluginUtils { * @return bean */ public List getMainBeans(Class aClass){ - return PluginBeanUtils.getPluginBeans(parentApplicationContext, aClass); + return SpringBeanUtils.getBeans(parentApplicationContext, aClass); } } diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/ClassUtils.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/ClassUtils.java index 87be49c..89c3d52 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/ClassUtils.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/ClassUtils.java @@ -36,6 +36,7 @@ public class ClassUtils { * 通过反射获取字段 * @param o 对象 * @param fieldName 字段名称 + * @param fieldClassType 字段类型 * @param 字段类型 * @return 字段值 * @throws IllegalAccessException 异常信息 diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/PluginBeanUtils.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/SpringBeanUtils.java similarity index 80% rename from springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/PluginBeanUtils.java rename to springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/SpringBeanUtils.java index 6e5b20d..e566c02 100644 --- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/PluginBeanUtils.java +++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/SpringBeanUtils.java @@ -10,9 +10,16 @@ import java.util.*; * @author starBlues * @version 2.4.0 */ -public class PluginBeanUtils { +public class SpringBeanUtils { - public static List getPluginBeans(ApplicationContext applicationContext, Class aClass) { + /** + * 得到ApplicationContext中的bean的实现 + * @param applicationContext ApplicationContext + * @param aClass 接口或者抽象类型bean类型 + * @param 接口或者抽象类型bean类型 + * @return 所有的实现对象 + */ + public static List getBeans(ApplicationContext applicationContext, Class aClass) { Map beansOfTypeMap = applicationContext.getBeansOfType(aClass); if(beansOfTypeMap.isEmpty()){ return Collections.emptyList(); @@ -24,7 +31,8 @@ public class PluginBeanUtils { * 得到某个接口的实现对象 * @param sourceObject 遍历的对象 * @param interfaceClass 接口类类型 - * @return Object + * @param 接口类型 + * @return 实现对象 */ public static T getObjectByInterfaceClass(Set sourceObject, Class interfaceClass){ if(sourceObject == null || sourceObject.isEmpty()){ @@ -40,10 +48,11 @@ public class PluginBeanUtils { return null; } - /*** + /** * 得到存在的bean, 不存在则返回null * @param applicationContext ApplicationContext容器 * @param aClass bean 类型 + * @param bean 类型 * @return 存在bean对象, 不存在返回null */ public static T getExistBean(ApplicationContext applicationContext, Class aClass){ @@ -55,10 +64,11 @@ public class PluginBeanUtils { } } - /*** + /** * 得到存在的bean, 不存在则返回null * @param applicationContext ApplicationContext容器 * @param beanName bean 名称 + * @param 返回的bean类型 * @return 存在bean对象, 不存在返回null */ public static T getExistBean(ApplicationContext applicationContext, String beanName){ -- Gitee