17

私はいくつかのSpringXML構成ファイルに取り組んでおり、それらが使用することもあれば、使用する"classpath:/datasource.xml"こともあり"classpath:datasource.xml"ます。2つの間に違いはありますか、それとも主要な/オプション/暗黙/冗長ですか?

4

1 に答える 1

20

この2つに違いはありません。表示される最大の違いは、相対パスとクラスパスの場所の*

これはSpringResourcesからの抜粋です。セクション4.7.2.2を探してください。

Classpath *:
"classpath *:"プレフィックスは、残りのロケーションパスのPathMatcherパターンと組み合わせることもできます(例: "classpath *:META-INF / *-beans.xml")。この場合、解決戦略は非常に単純です。最後の非ワイルドカードパスセグメントでClassLoader.getResources()呼び出しを使用して、クラスローダー階層内の一致するすべてのリソースを取得し、各リソースから同じPathMatcher解決戦略を取得します。上記はワイルドカードサブパスに使用されます。

これは、「classpath *:*。xml」のようなパターンは、jarファイルのルートからではなく、展開されたディレクトリのルートからのみファイルを取得することを意味します。これは、渡された空の文字列(検索する潜在的なルートを示す)のファイルシステムの場所のみを返すJDKのClassLoader.getResources()メソッドの制限に起因します。

于 2012-12-21T18:11:00.380 に答える