2

想象一下有 2 个独立模块的情况 - 模块 A 和 B。它们都是使用 Spring 构建的。它们每个都有自己的 applicationContext - 模块 A 与 applicationContextA 和 B - applicationContextB 一起使用。
模块 A 包含外观类 - 在 bean moduleAFacade 中定义 - 提供模块 A 的一些功能。模块 B 需要访问模块 A 的功能。
让我们将模块 A 添加为模块 B 中的 .jar 依赖项。有这个结构在 applicationContextB 中:

<bean id="moduleBBeanUsingModuleAfacade" class="com.example.moduleB">
    <property name="moduleAFacadeObject" ref="moduleAFacade" />
</bean>

但是模块 A 的 applicationContext 不能直接从模块 B 的 appContext 访问。我需要使用类似的东西

<import resource="classpath*:moduleAApplicationContext.xml" /> 

是否有任何其他方法可以访问作为依赖项添加到项目中的 .jar 文件的应用程序上下文?
是否有一些最佳实践来完成任务?


4

1 回答 1

4

您可以在模块 A 中定义配置文件

package you.organisation.moduleA.config;
@Configuration
@ImportResource("classpath:path/to/applicationContextA.xml")
public class ModuleAConfig implements Serializable {

}

在模块 B 上下文文件中,您可以访问模块 A bean

<context:component-scan base-package="you.organisation.*.config" />

如果你想使用模块 B 配置文件,你也可以这样做

package you.organisation.moduleB.config;
@Configuration
@ImportResource("classpath:path/to/applicationContextB.xml")
public class ModuleBConfig implements Serializable {

}

并在将使用它的模块中

<context:component-scan base-package="you.organisation.*.config" />

关于使用通配符时必须小心的最佳实践,请查看第 4.7.2.2 节

于 2013-08-30T12:01:52.983 回答