首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用spring和pf4j将应用程序的端点与外部插件混合?

如何使用spring和pf4j将应用程序的端点与外部插件混合?
EN

Stack Overflow用户
提问于 2022-03-30 19:59:25
回答 1查看 104关注 0票数 0

我已经创建了一个spring引导应用程序(2.6.4),我想使用p4fj集成一些插件。我以前在非spring引导应用程序中使用过p4fj,但是我看到现在它有了p4fj-spring来帮助这个过程。

其思想不仅是集成插件方法,而且还要检查如何集成一些端点。为此目的,我正在跟踪官方教程。这里的要点是,为了包括插件端点(基于@RestController,而不是反应性端点),建议:

代码语言:javascript
复制
private void registerMvcEndpoints(PluginManager pm) {
        pm.getExtensions(PluginInterface.class).stream()
                .flatMap(g -> g.mvcControllers().stream())
                .forEach(r -> ((ConfigurableBeanFactory) beanFactory)
                        .registerSingleton(r.getClass().getName(), r));
        applicationContext
                .getBeansOfType(RequestMappingHandlerMapping.class)
                .forEach((k, v) -> v.afterPropertiesSet());
    }

该方法的第一部分是以bean的形式从插件中获取和注册所需的类,以便稍后将第二部分注册为端点。为此,它使用了一个RequestMappingHandlerMapping.class。如果我们遵循本教程中的示例,它对于一个没有自己端点的应用程序是很好的,它只是注册来自外部插件的端点。

我面临的问题是,当我试图混合一个已经有一些端点(由@RestController定义)的应用程序时,我想从一个或多个插件中添加一些额外的端点。运行前面的代码时,我会收到一个错误,它告诉我应用程序的端点不能注册为已经存在的。

代码语言:javascript
复制
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: Ambiguous handler methods mapped for '/health-check': {public void my.package.webservice.Info.healthCheck(javax.servlet.http.HttpServletRequest), public void my.package.webservice.Info.healthCheck(javax.servlet.http.HttpServletRequest)}

似乎,当我们试图包含来自插件的所有端点时,它也同样包含了所有的应用程序端点,因此它面临着URL和方法对任何端点的唯一性的限制。我已经调试过了,事实上,RequestMappingHandlerMapping已经在spring (以及插件)注册了来自应用程序端点的信息。

我已经尝试创建一个定制的RequestMappingHandlerMapping,但这只是增加了更多的重复。我还试图从前面显示的registerMvcEndpoints方法中筛选出应用程序端点(即包或url),但我对它们并不满意,因为我们不是一个接一个地注册,而是在afterPropertiesSet()中一起注册。

那么问题是..。如何避免已由标准的spring初始化进程注册的端点的寄存器?或者,还有其他方法来注册插件端点吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-27 03:41:51

如果您想在Spring上使用pf4j,那么sbp是一个很好的开始;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71683435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档