首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@SpringBean对子ApplicationContext中bean的支持

@SpringBean对子ApplicationContext中bean的支持
EN

Stack Overflow用户
提问于 2016-02-24 17:10:38
回答 2查看 546关注 0票数 1

我正在与PF4J(插件框架为Java)的开发人员合作,为Wicket提供更好的插件功能。已经有了一个pf4j-spring和一个pf4j-wicket项目来提供一些基本的集成。为了允许@SpringBean或@Inject注释能够访问子上下文中的插件bean,我们需要能够查找与特定类关联的ApplicationContext。

例如,假设我在子插件( plugin ) ApplicationContext中有一个ApplicationContext bean,该插件还通过@SpringBean注释提供了一个面板。Spring不允许父ApplicationContext在子上下文中看到bean,这是有原因的。因此,我们将得到一个异常,即不能找到bean,因为@SpringBean只在父上下文中查找bean。我们开发的代码可以查找子上下文,如下所示:

代码语言:javascript
复制
SpringPlugin plugin = (SpringPlugin)PluginManager.whichPlugin(MyService.class);
ApplicationContext pluginContext = plugin.getApplicationContext();

如何在自定义SpringComponentInjector版本中修改或提供此功能?它使用ISpringContextLocator,但是上下文定位器没有指定它需要ApplicationContext的类。

对于如何实现这一点,有什么想法吗?

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-25 09:50:23

恐怕目前的SpringComponentInjector还没有准备好这样的使用。您将不得不创建您自己的版本。

我看到的问题是,您必须拥有与插件一样多的IComponentInstantiationListeners。或者创建一个复合ICIL,为每个插件委托给SpringBeanLocators。我觉得复合材料会更好。然后,您必须确保pluginA中的面板不能使用由SpringBeanLocatorB定位的bean。

如果你设法做到这一点,并且你在wicket-spring中找到了一些可以使你的版本变得更简单的通用的东西,那么请告诉我们,我们会考虑你的建议!

票数 0
EN

Stack Overflow用户

发布于 2019-12-11 12:40:34

看看sbp。它构建在pf4j之上,支持Spring,并提供了在主应用程序和插件之间共享bean的机制。看上去:

代码语言:javascript
复制
    @Override
    protected SpringBootstrap createSpringBootstrap() {
        return new SharedDataSourceSpringBootstrap(this, MdSimplePluginStarter.class)
            .addSharedBeanName("objectMapper")
            .addSharedBeanName("cacheService");
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35608610

复制
相关文章

相似问题

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