Java URL Protocols: classpath:/?
我见过一些Spring代码,它们使用URL协议直接从运行时类路径读取配置文件和其他资源。classpath:/some/path/to/resource
这是Spring构造还是Java构造?
除了这个问题之外,我找不到任何文档 - 从Java中的类路径加载资源的URL,这并不表示任何一种方式。
如果它是一个Java结构,任何人都可以向我指出它的官方文档吗?
我见过一些Spring代码,它们使用URL协议直接从运行时类路径读取配置文件和其他资源。classpath:/some/path/to/resource
这是Spring构造还是Java构造?
除了这个问题之外,我找不到任何文档 - 从Java中的类路径加载资源的URL,这并不表示任何一种方式。
如果它是一个Java结构,任何人都可以向我指出它的官方文档吗?
好吧,您始终可以注册URL处理程序。Java还有一个 file:/// 和jar:handler。此外,class.getResource 将默认从类路径读取。
http://code.google.com/p/madura-classpath-protocol-handler/
显然,这是一个弹簧功能。
“你可以在JDK的RT中看到这些标准处理程序和相关的实现类。JAR 文件。查找其完全限定名称以 sun.net.www.protocol 开头的类。例如,类 sun.net.www.protocol.http.handler 定义了 HTTP 协议处理程序。类 sun.net.www.protocol.ftp.Handler 定义了 FTP 协议处理程序类。
http://java.sun.com/developer/onlineTraining/protocolhandlers/
尝试在 Java 1.6 中使用会导致:classpath:
Exception in thread "main" java.net.MalformedURLException: unknown protocol: classpath
类路径:特定于弹簧。Spring的资源解析机制(即 或其他 imlementations) 知道 和 “classpath*:” 前缀。PathMatchingResourcePatternResolver
"classpath:"
它接受它并解析为对象,这些对象恰好实现了弹簧接口。ClassPathResource
Resource
除其他事项外,该接口还具有一个可用于获取内容的方法,而无需知道它是什么类型的资源。Resource
getInputStream()
这与任何 URL 协议处理完全分开,因此您不一定能够直接将其添加为协议处理程序。
但是,您可以对类本身作为协议处理程序的一部分进行一些使用。ClassPathResource