java - Spring - 使用作为依赖项添加的 .jar 文件中的 applicationContext

标签 java spring applicationcontext

想象一下有 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/

相关文章:

java - spring DispatcherServlet 上下文继承

java - 异常: Caused by: org. springframework.beans.factory.BeanCreationException:创建名称为 'httpPutFormContentFilter'的bean时出错

java - 如何从本地存储库覆盖现有的 Gradle 插件?

java - 如何修复java下载按钮连续点击ClientAbortException : java. io.IOException错误?

java - 如何用假测试模块替换 Guice 模块进行单元测试?

java - 将参数传递给 threadpoolexecutor

java - 无法加载 ApplicationContext : IllegalArgumentException

java - 删除ArrayList中特定大小的元素

java - 为空 json 字段设置默认值

java - 通过 YML 文件将 map 中的符号和特殊字符作为键