gpt4 book ai didi

java - @SpringBean 对子 ApplicationContext 中 bean 的支持

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:23 27 4
gpt4 key购买 nike

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

例如,假设我在子(插件)ApplicationContext 中有一个 MyService bean,并且该插件还通过 @SpringBean 注释提供了一个需要该面板的面板。 Spring 不允许父 ApplicationContext 查看子上下文中的 bean,这是有充分理由的。所以我们会得到一个异常,说找不到 bean,因为 @SpringBean 只在父上下文中查找 bean。我们开发了代码来查找子上下文,如下所示:

SpringPlugin plugin = (SpringPlugin)PluginManager.whichPlugin(MyService.class);
ApplicationContext pluginContext = plugin.getApplicationContext();

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

关于如何实现这一目标有什么想法吗?

感谢您的帮助!

最佳答案

恐怕当前的SpringComponentInjector还没有准备好这样的用法。您必须创建自己的版本。

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

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

关于java - @SpringBean 对子 ApplicationContext 中 bean 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35608610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com