java - 使用其他模块的 spring bean?

标签 java spring jakarta-ee classloader

我想这很简单 - 但我找不到正确的搜索词组合来获得答案。如果我有一个多模块应用程序,我如何让模块 A 中的 bean 可供模块 B 中的 bean 使用。

项目设置看起来有点像这样:

project.ear/module-a.jar/resources/beans.xml
project.ear/module-a.jar/java/foo/bar.class
project.ear/module-b.war/java/foo/barFactory.class

类路径或文件系统都无法访问 beans.xml。有没有办法做到这一点?还是我应该以不同的方式做所有事情?

最佳答案

您的应用服务器可能对 EAR 中的每个模块使用不同的类加载器,从而阻止一个模块看到另一个模块中的资源。这是 JavaEE 类加载器的默认行为。

你要么需要

  • 重新配置您的应用程序服务器以在整个 EAR 中使用“统一的”类加载器(这是高度特定于应用程序服务器的,但如果您能让它工作就很好),或者
  • 将所有内容打包到一个模块中(例如,您的 WAR 可以包含所有内容),或者
  • 声明 WAR 模块的正式 list ,允许它声明其对各个 JAR 模块的依赖关系,这应该允许 WAR 查看 JAR 模块中的资源。

关于java - 使用其他模块的 spring bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1816370/

相关文章:

java - 为什么我的SQL数据库无法在Android中使用?

java - 在 Spring 测试类中设置等效属性后?

java - 在 eclipse-Java 中重写 hashCode()

web-services - 从 Jetty 中 Web 应用程序外部的文件夹提供文件

java - 如何禁用Jtextarea的滚动条

java - 如何使@NotNull 抛出运行时异常?

Java邮件发送器发送重复的电子邮件

java - 编写带有多个内连接和其他条件的 Spring 规范

java - 登录 ADFS 时出现错误 - System.FormatException : Index (zero based) must be greater than or equal to zero and less than the size

java - 使用tomcat作为服务器连接到derby数据库