Java URL协议:classpath:/?

IAm*_*aja 13 java spring classpath

我已经看到一些Spring代码使用classpath:/some/path/to/resourceURL协议直接从运行时类路径读取配置文件和其他资源.

这是Spring构造还是Java构造?

除了这个问题,我找不到任何文档 - 从Java中的类路径加载资源的URL,这并不表示任何一种方式.

如果它是Java构造,那么有人能指出我的官方文档吗?

Mar*_*nen 13

那么你总是可以注册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协议处理程序.class sun.net.www.protocol.ftp.Handler定义了FTP协议处理程序类."

http://java.sun.com/developer/onlineTraining/protocolhandlers/

"线程中的异常"主"java.net.MalformedURLException:未知协议:类路径"(说java 1.6)

  • 很酷的提示!我不知道你可以注册自己的处理程序(+1)!但是你知道“classpath”是由 Spring 定义/注册的 URL 处理程序,还是随 Java 一起提供的?再次感谢! (2认同)

Mat*_*att 6

classpath:特定于spring.Spring的资源解析机制(即PathMatchingResourcePatternResolver或其他imlementations)知道"classpath:"和"classpath*:"前缀.

它需要并解析为ClassPathResource碰巧实现弹簧Resource接口的对象.

Resource除其他外,该接口具有getInputStream()可用于获取内容的方法,而不必知道它是什么类型的资源.

这与任何URL协议处理完全分开,因此您不一定能够直接将其添加为协议处理程序.

但是,您可以将ClassPathResource类本身作为协议处理程序的一部分使用.