我看到一些Spring代码直接从运行时类路径使用 classpath:/some/path/to/resource
URL协议读取配置文件和其他资源。
这是Spring构造还是Java构造?
除了这个问题之外,我找不到任何文件说明。这个问题是关于在Java中从类路径加载资源的URL的:URL to load resources from the classpath in Java, 但它没有指示任何一种方式。
如果这是一个Java结构,有人能指向官方文档吗?
我看到一些Spring代码直接从运行时类路径使用 classpath:/some/path/to/resource
URL协议读取配置文件和其他资源。
这是Spring构造还是Java构造?
除了这个问题之外,我找不到任何文件说明。这个问题是关于在Java中从类路径加载资源的URL的:URL to load resources from the classpath in Java, 但它没有指示任何一种方式。
如果这是一个Java结构,有人能指向官方文档吗?
您可以始终注册URL处理程序。Java还具有file:///和jar:处理程序。此外,class.getResource默认会从类路径中读取。
http://code.google.com/p/madura-classpath-protocol-handler/
显然这是一个spring功能。
"您可以在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
classpath
是Spring定义/注册的URL处理程序,还是随Java一起发行的?再次感谢! - IAmYourFajaclasspath:是特定于Spring的。Spring的资源解析机制(即 PathMatchingResourcePatternResolver
或其他实现)了解" classpath:"
和" classpath *:"
前缀。
它将其解析为 ClassPathResource
对象,这恰好实现了Spring的 Resource
接口。
除其他事项外, Resource
接口还具有 getInputStream()
方法,可用于获取内容,而无需知道资源类型。
这与任何URL协议处理完全分离,因此您可能无法直接将其添加为协议处理程序。
但是,您可以将 ClassPathResource
类本身作为协议处理程序的一部分。
classpath:
的说明:https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/resources.html - Joman68
ResourceLoader
抽象的内容:http://static.springsource.org/spring/docs/3.0.x/reference/resources.html#resources-resourceloader - Slava Semushin