2010-03-04 7 views
3

J'essaie d'extraire le fichier xml (contenant la définition du bean) dans mon projet Spring MVC. Si j'ai le fichier xml sous le répertoire WEB-INF, alors quel chemin dois-je mettre dans FileSystemResource dans mon servlet pour récupérer le xml?FileSytemResources dans Spring Framework

i.e. BeanFactory factory = new XmlBeanFactory(new FileSystemResource("xml")); 

Merci

Répondre

2

Vous ne devriez pas utiliser FileSystemResource, vous devez utiliser ServletContextResource:

new ServletContextResource(servletContext, "/myfile.xml"); 

En supposant, bien sûr, que le ServletContext est à votre disposition.

Si vous vraiment voulez utiliser FileSystemResource, alors vous devez demander le conteneur dans lequel le répertoire est, et l'utiliser comme un chemin relatif, par exemple

String filePath = servletContext.getRealPath("/myfile.xml"); 
new FileSystemResource(filePath); 

Il est plus facile de laisser Spring faire le travail pour vous. Dites que vous avez un haricot qui a besoin de ce Resource. Vous pouvez injecter le chemin de ressource sous la forme d'une chaîne et laisser Printemps le convertir en ressource, par ex.

public class MyBean { 

    private Resource myResource; 

    public void setMyResource(Resource myResource) { 
     this.myResource = myResource; 
    } 
} 

et dans votre fichier haricots:

<bean id="myBean" class="MyBean"> 
    <property name="myResource" value="/path/under/webapp/root/of/my/file.xml"> 
</bean> 

Spring convertira le chemin de la ressource en ServletContextResource et de transmettre cela à votre haricot.

+0

Merci! Dans ma servlet j'ai HttpServletRequest et HttpServletResponse, donc je fais "request.getRealPath()" au lieu de servletContext.getRealPath(). – portoalet

+0

m'a sauvé la vie !! – rpr

Questions connexes