如何将 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配置文件一样使用吗? 请在回答中添加 Alan Franzoni 的提示 - 这很有帮助。【参考方案2】:

除了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以后不报错?

如何将由 JS 文件中的 IIFE 初始化的 var 导入到 TS 类?

jest.mock():如何使用工厂参数模拟 ES6 类默认导入