web-dev-qa-db-fra.com

en utilisant classpath: au printemps

J'ai deux questions concernant classpath: option au printemps: -

1) Est-ce que classpath: recherche de ressource par rapport au document dans lequel elle est spécifiée (dans le cas d'applications web)?

Supposons que j'utilise ce qui suit:

<bean class="mybean">
<property name="myresource" value="classpath:myfile.txt"/>
</bean>

dans myconfig.xml sous / WEB-INF/classes/config/myconfig.xml. Alors d'où partira-t-il sa recherche?

2) Est-il plus rapide de rechercher si je donne l'emplacement direct de la ressource au lieu de donner classpath: c'est à dire

<bean class="mybean">
<property name="myresource" value="classpath:/WEB-INF/classes/myfolder/myfile.txt"/>
</bean>

au lieu de

<bean class="mybean">
<property name="myresource" value="classpath:myfile.txt"/>
</bean>

Merci...

24
a Learner

Est-ce que classpath: recherche de ressource par rapport au document dans lequel elle est spécifiée (dans le cas d'applications web)?

Non, classpath: est toujours relatif à la racine du chemin de classe. Si vous mettez un / au début du chemin, il est supprimé silencieusement.

Est-il plus rapide de rechercher si je donne plutôt l'emplacement direct de la ressource, par exemple classpath:/WEB-INF/classes/myfolder/myfile.txt

Non, ça ne marchera pas du tout. La racine du chemin d'accès aux classes contient /WEB-INF/classes, le chemin doit donc être relatif à cela.

Ne confondez pas classpath: chemins avec chemins de fichiers, ils n'ont aucun rapport les uns avec les autres.

17
skaffman

Jetez un œil à http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/resources.html#resources-classpath-wildcards

Ce préfixe spécial spécifie que toutes les ressources de chemin de classe qui correspondent au nom donné doivent être obtenues (en interne, cela se produit essentiellement via un appel ClassLoader.getResources (...)), puis fusionnées pour former la définition de contexte d'application finale.

Donc classpath: commence à la racine de votre chemin de classe.

4
user647772