目标:
- 项目清单
- 我有一个 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 修改类路径扫描并保持自动组件扫描?
谢谢 !