想象一下有 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 文件的应用程序上下文?
是否有一些完成任务的最佳实践?
最佳答案
可以在模块A中定义配置文件
package you.organisation.moduleA.config;
@Configuration
@ImportResource("classpath:path/to/applicationContextA.xml")
public class ModuleAConfig implements Serializable {
}
并且在模块 B 上下文文件中,您可以访问模块 A beans
<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" />
关于使用通配符时必须小心的最佳实践,请有look to the section 4.7.2.2
关于java - Spring - 使用作为依赖项添加的 .jar 文件中的 applicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18513380/