在 Spring 的 Classpath 中发现 Plugin-JARS

发布于 2024-10-24 07:10:05 字数 72 浏览 2 评论 0原文

有没有办法在Spring中发现一个 “插件”-来自类路径的 JAR, 并动态加载其applicationContext.xml?

Is there a way in Spring to discover a
"plugin"-JAR from the classpath,
and load its applicationContext.xml dynamicaly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离去的眼神 2024-10-31 07:10:05

我通过以下方法使用 Spring 实现了一个类似插件的系统:

  • 每个插件必须包含一个具有特定名称和包前缀的 spring-context 文件(例如,com.example.myApp.whatever 包含 plugin.xml,或者 applicationContext.xml(如果您愿意)。

  • 为了在类路径中检测到插件,主机应用程序应按照先前的方案动态导入由任何 jar 提供的所有上下文文件。这是通过 spring 配置中基于通配符的导入来实现的:

     <导入资源="classpath*:/com/example/myApp/**/plugin.xml" />
    
  • 假设每个插件都定义了已知接口(例如,MyInterface)的 bean。主机应用程序可以定义类型List的属性。并将bean 定义为autowire="byType",以便检索列表中MyInterfaceType 的所有bean。

I have achieved a plugin-like system with Spring by following this approach:

  • Each plug-in must contain a spring-context file with a specific name and package prefix (for example, com.example.myApp.whatever containing plugin.xml, or applicationContext.xml if you prefer).

  • For the plug-in to be detected in the classpath, the host application should dynamically import all the context files contributed by any jar following the previos scheme. This is achieved with a wildcard-based import in spring config:

     <import resource="classpath*:/com/example/myApp/**/plugin.xml" />
    
  • Provided that each plug-in defines beans of a known interface (e.g., MyInterface). The host application can define a property of type List <MyInterface> and define the bean as autowire="byType" in order to retrieve all the beans of the MyInterfaceType in a list.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文