Pracuję nad plikami konfiguracyjnymi Spring XML i czasami używają one "classpath:/datasource.xml"
, a czasami "classpath:datasource.xml"
. Czy istnieje różnica między tymi dwoma elementami lub czy jest to opcja opcjonalna/domniemana/nadmiarowa? /
?Jaka jest różnica między "classpath:" a "classpath: /" w Spring XML?
Odpowiedz
Nie widzę żadnej różnicy między tymi dwoma. Największą różnicą, że widać jest, że względna ścieżka a * na miejscu ścieżki klasy
Oto fragment z Spring Resources, poszukaj sekcji 4.7.2.2
Classpath *:
W „classpath *: przedrostek można łączyć z wzorcem PathMatcher w pozostałej części ścieżki lokalizacji, na przykład "classpath *: META-INF/* - beans.xml". W takim przypadku strategia rozwiązywania problemów jest dość prosta: wywołanie ClassLoader.getResources() jest używane na ostatnim segmencie ścieżki bez symboli wieloznacznych, aby uzyskać wszystkie pasujące zasoby w hierarchii programu ładującego klasy, a następnie wyłączyć każdy zasób w tej samej strategii rozstrzygania PathMatchera opisany powyżej jest używany dla podtrybu wieloznacznego.
Oznacza to, że wzorzec taki jak "classpath *: *. Xml" nie będzie pobierał plików z katalogu głównego plików jar, a raczej tylko z katalogu głównego rozszerzonych katalogów. Wynika to z ograniczenia w metodzie ClassLoader.getResources() JDK, która zwraca tylko lokalizacje systemu plików dla przekazanego pustego łańcucha (wskazującego potencjalne źródła wyszukiwania).
Nie widzę żadnej różnicy między tymi dwoma. Największą różnicą, jaką zobaczysz, jest względna ścieżka i * w miejscu ścieżki klasy. – muruga
@muruga Właściwie to widziałem, co to znaczy? – ArtB