如何将Java-config类导入XML-config,以便两个上下文都有bean?

时间:2012-11-06 16:00:34

标签: spring configuration

我有一个项目需要将@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。有谁知道我怎么能这样做?

3 个答案:

答案 0 :(得分:79)

这实际上最终变得相当简单。要将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的评论。

答案 1 :(得分:3)

annotation-config之外,您可以使用component-scan。然后,您不必在XML中包含配置Bean:

<context:component-scan base-package="[fully qualified package path]" />

有关详细信息,请参阅Difference between <context:annotation-config> vs <context:component-scan>

答案 2 :(得分:0)

应该在:

spring-javaconfig-<version>.jar