【问题标题】:Need understanding of spring.handlers and spring.schemas需要了解 spring.handlers 和 spring.schemas
【发布时间】:2012-01-26 09:59:10
【问题描述】:
我有一些问题源于我已经通过this other question 解决的问题。但是,我仍然想知道根本原因。我的问题如下:
-
spring.handlers 和 spring.schemas 的用途是什么?
据我了解,这是一种告诉 Spring 框架在哪里定位 xsd 的方法,以便正确连接和加载所有内容。但是……
META-INF文件夹下什么情况下应该有这两个文件?
在我上面链接的另一个问题中,有人知道为什么我必须添加 maven-shade-plugin 在 META-INF 下创建这两个文件(基于我的所有依赖项)吗?换句话说,让我不得不使用 maven shade 插件的根本原因是什么?
【问题讨论】:
标签:
spring
xsd
uri
spring-batch
spring-3
【解决方案1】:
spring.handlers 和 spring.schemas 的作用是什么?
好吧,您或多或少是您自己发现的,让我们添加更多细节:
一些 spring 库在 META-INF 目录中包含 spring.schemas and a spring.handlers file
META-INF/spring.schemas
- 将架构位置重新映射 (*) 到库中的 xsd
- (摘要)此库仅支持重新映射的版本
META-INF/spring.handlers
- 为特定命名空间提供命名空间处理程序类
- 命名空间处理程序类提供解析器逻辑来解析 spring-batch bean,如 job,
步骤等
(*) 实际的重新映射发生在 Spring 应用程序上下文的构建过程中
什么情况下我应该把这两个文件放在
META-INF 文件夹?
通常文件在你使用的spring库jar中,但你可以使用该机制来实现自己的命名空间bean解析,那么你就会有自己的文件
在我上面链接的另一个问题中,有人知道我为什么必须添加
maven-shade-plugin 来创建这两个文件(基于我所有的
依赖项)在 META-INF 下?换句话说,根本原因是什么
这让我不得不使用 maven shade 插件?
如果您在 spring 配置中使用 spring 命名空间,则需要相应的文件
当你想运行一个java应用程序时,问题就出现了:
- 有一个主类
- spring 库需要在类路径中
- 或全部合并到一个 jar 中,该 jar 必须在类路径中 (*)
- 作为 war/ear 服务器应用程序,spring 库需要在类路径中,通常在 war 中
我猜你没有用完整的类路径启动主类,我也为你的第一个问题更新了我的answer
(*) 如果将所有内容合并到一个 jar 中,则必须确保所有 spring.schemas/spring.handlers 文件的内容都合并到一个 spring.schemas 和一个 spring.handlers 文件中,请参阅@ 987654323@