1

目标:

  • 项目清单
  • 我有一个 spring webapp 项目,它使用组件扫描进行配置和通过 maven 子模块自动装配接口实现
  • 主项目依赖于其他模块,因此子模块的 jar 放在 /WEB-INF/lib 文件夹中
  • 子模块(又名插件)具有共同的包父名称 xyzextension 例如。xyzextension.pluginA
  • 此包中的类使用@Component 或@Configuration 注解
  • 在 servlet xml 配置中,我放置了这样的组件扫描信息:

代码:

<context:spring-configured />
<context:component-scan base-package="x.y.z.extension" />

使用上述配置,一切正常。

我想达到的目标:

  • 项目清单
  • 删除主 webapp maven 模块和其他模块的依赖 - 核心 webapp 将不带插件发货
  • 在类路径类目录中创建子文件夹,例如“WEB-INF/classes/plugins”
  • 将提到的 jar 从子模块放在那里(或将 jar 内容提取到例如 WEB-INF/classes/plugins/pluginA) - 这可以在“插件安装”期间完成,在新插件安装后重启 webapp
  • spring 应该自动检测带注释的类并将其加载到应用程序上下文中(并在插件 jar 中使用未注释的类(带注释的类主要是接口实现,但它们在 jar 中使用了一些未注释的类))

和......当然这不起作用找不到类。

如果只能使用 spring 生态系统来实现这一点,还是应该看看其他示例,例如 jspf ?如何使用 spring 修改类路径扫描并保持自动组件扫描?

谢谢 !

4

0 回答 0