I have what seems like a simple problem. I have a Spring web app, deployed in Tomcat. In a service class I want to be able to write a new file to a directory called graphs just under my application root:
/
/WEB-INF
/graphs/
/css/
/javascript/
My service class is a Spring bean, but I don’t have direct access to ServletContext through the HttpServlet machinery. I’ve also tried implementing ResourceLoaderAware but still can’t seem to grab a handle to what I need.
How do I use Spring to get a handle to a directory within my application so that I can write a file to it? Thanks.
If your bean is managed by the webapp’s spring context, then you can implement
ServletContextAware, and Spring will inject theServletContextinto your bean. You can then ask theServletContextfor the real, filesystem path of a given resource, e.g.If your bean is not inside a webapp context, then it gets rather ugly, something like may work:
This uses the deprecated
ServletRequest.getRealPathmethod, but it should still work, althoughRequestContextHolderonly works if executed by the request thread.