我正在与PF4J(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 的类。
关于如何实现这一点的任何想法?
谢谢你的帮助!