2

如何从另一个模块的弹簧上下文中导入一个弹簧上下文?

module2 --uses--> module1

我有 module1 和 module2(在我的 maven 模型中),它们都是 spring 应用程序。这两个项目都位于同一个父目录中。

在 module1 我有 'module1/Bean1' 类(这是一个弹簧豆)

moodule2 应该使用 module1。因此,在 module2/src/main/resources/context2.xml 中,我尝试将“引用”放在 context1 中,如下所示:

上下文2.xml:

 <import resource="classpath*:module1/resources/context1.xml" />

所以,我期待在module2中使用这个代码:

ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
                        new String[] {"context2.xml"});
Bean1 bean1 = (Bean1) appContext.getBean("bean1"); // It uses bean defined in the module1

但现在我有一个例外: 没有定义名为 'bean1' 的 bean

-- context1.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:annotation-config />
    <context:component-scan base-package="module1"/>    <!-- for @Component, @Service, @Repository being scanned in particular folder -->

4

1 回答 1

1

如果您 context1.xml 在 /module1/src/main/resources/ 下,而不是

<import resource="classpath*:module1/resources/context1.xml" />

你应该使用

<import resource="classpath*:context1.xml" />
于 2012-08-17T14:20:35.360 回答