2012-08-17 14 views
9

classpath:/some/path/to/resource URLプロトコルを使用して、ランタイムクラスパスから直接設定ファイルやその他のリソースを読み込むSpringコードを見てきました。Java URLプロトコル:classpath:/?

これはSpringの構造ですか、Javaの構造ですか?

私はこの質問の他に何かの文書を見つけることができません - URL to load resources from the classpath in Java、いずれの方法も示していません。

Javaの場合は、誰でも公式ドキュメントを参照できますか?

+0

「ResourceLoader」抽象化についてお読みください:http://static.springsource.org/spring/docs/3.0.x/reference/resources.html#resources-resourceloader –

答えて

11

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.net.MalformedURLException:不明なプロトコル:クラスパス" (Javaの1.6が言う)

+0

ヒント!あなた自身のハンドラーを登録することができるかどうかはわかりませんでした(+1)!しかし、 'classpath'がSpringによって定義され/登録されたURLハンドラであるか、Javaに同梱されているのか知っていますか?再度、感謝します! – IAmYourFaja

+0

私はそれが内蔵の春の機能だと思う(そのリンクを見て) –

4

クラスパスは:春に固有のものです。 Springのリソース解決メカニズム(PathMatchingResourcePatternResolverまたは他のimlementations)は"classpath:"と "classpath *:"接頭辞について知っています。

それはClassPathResourceのオブジェクトに解決され、スプリングを実装するようになりましたResourceインターフェイス。

Resourceインターフェイスの中には、コンテンツの取得に使用できるgetInputStream()メソッドがあります。このメソッドは、リソースの種類を意識する必要はありません。

これはURLプロトコルの処理とはまったく別物なので、必ずしもこれを直接プロトコルハンドラとして追加することはできません。

ただし、ClassPathResourceクラス自体をプロトコルハンドラの一部として使用することができます。

関連する問題