如何将 Java-config 类导入 XML-config 以便两个上下文都有 bean?
Posted
技术标签:
【中文标题】如何将 Java-config 类导入 XML-config 以便两个上下文都有 bean?【英文标题】:How to import Java-config class into XML-config so that both contexts have beans? 【发布时间】:2012-10-26 15:03:01 【问题描述】:我有一个项目,我需要将 @Configuration java-config 类引导到 XML 配置中。
为此,我读到我还需要包含以下 bean 定义(以及使用 @Configuration 注释的类的 bean 定义)。
<bean class="org.springframework.config.java.process.ConfigurationPostProcessor" />
但是,我最终收到以下错误:
Caused by: java.lang.ClassNotFoundException: org.springframework.config.java.process.ConfigurationPostProcessor
我不得不假设我在某处遗漏了一个罐子,但我的各种网络搜索还没有得到答案。任何帮助将不胜感激。谢谢。
编辑:显然,我正在阅读旧文档,这些文档不再是最新的。让我备份。我的项目包含较旧的基于 XML 的配置。较新的代码都使用“Java-config”。话虽如此,上下文显然是完全分开的。我想将一个 java-config 类“导入”到 XML 配置中,以便两个上下文都有那些特定的 bean。有谁知道我该怎么做?
【问题讨论】:
【参考方案1】:这实际上非常简单。要将 Java-config bean 定义放入 xml-config,只需将 Java-config 类定义为 XML-config 中的 bean。不需要额外的罐子。
@Configuration
public class SomeJavaConfig
@bean
... [bean definition]
在 XML-config 中,您将此类定义为 bean。
<!-- needed to pick up the annotated java-config -->
<context:annotation-config />
<!-- Importing java-config class, which are annotated with @Configuration -->
<bean name="SomeJavaConfig" class="[fully qualified path].SomeJavaConfig" />
XML-config 可能是不同上下文的一部分,现在包含在 JavaConfig 类中定义的所有 bean 定义。
已更新 - 将 Alan Franzoni 的评论包含在答案中。
【讨论】:
旁注: 也必须存在于您的 XML 配置中,否则您的 javaconfig 将不会被包含。 如果您已经在 XML 配置中定义了 ConfigurationPostProcessor,则不需要! 标签刚刚为你添加了所有的 springs PostProcessors。 我们可以像处理另一个xml配置文件一样使用除了annotation-config
,您还可以使用component-scan
。那么您不必在 XML 中包含配置 Bean:
<context:component-scan base-package="[fully qualified package path]" />
更多详情请见Difference between <context:annotation-config> vs <context:component-scan>。
【讨论】:
【参考方案3】:应该在:
spring-javaconfig-<version>.jar
【讨论】:
显然,spring-javaconfig jar 已停用。它应该在 3.0 版本中迁移到 Spring Core。以上是关于如何将 Java-config 类导入 XML-config 以便两个上下文都有 bean?的主要内容,如果未能解决你的问题,请参考以下文章
spring-batch (java-config) 使用 JobExecutionDecider 识别和执行步骤
如何将自定义类导入 Flex 中的 mxml 文件? (动作脚本 3)
如何避免Eclipse在将类名放在注释中的时候导入类,让checkstyle以后不报错?