2012-12-21 13 views
14

Sto lavorando su alcuni file di configurazione Spring XML ea volte usano "classpath:/datasource.xml" e talvolta "classpath:datasource.xml". C'è una differenza tra i due o è il principale / opzionale/implicito/ridondante?Qual è la differenza tra "classpath:" e "classpath: /" in Spring XML?

+0

Non vedo alcuna differenza tra questi due. La più grande differenza che vedrai è che il percorso relativo e il * nella posizione del percorso di classe. – muruga

+0

@muruga In realtà, ho visto anche questo, cosa significa? – ArtB

risposta

18

Non vedo alcuna differenza tra questi due. La più grande differenza che vedrete è che il percorso relativo e il * sulla localizzazione classpath

Ecco un estratto dal Spring Resources, cercare la sezione 4.7.2.2

Classpath *:
Il "percorso di classe *: "il prefisso può anche essere combinato con un pattern PathMatcher nel resto del percorso della posizione, ad esempio" classpath *: META-INF/* - beans.xml ". In questo caso, la strategia di risoluzione è abbastanza semplice: una chiamata ClassLoader.getResources() viene utilizzata sull'ultimo segmento del percorso non jolly per ottenere tutte le risorse corrispondenti nella gerarchia del programma di caricamento classi e quindi su ogni risorsa la stessa strategia di risoluzione PathMatcher sopra descritto è usato per il sottotesto di caratteri jolly.

Ciò significa che un modello come "classpath *:. * Xml" non recuperare i file dalla radice del file jar ma solo dalla radice di directory espanso. Ciò si origina da una limitazione nel metodo ClassLoader.getResources() di JDK che restituisce solo le posizioni del file system per una stringa vuota passata (indicando le potenziali radici da cercare).