Spring MVC无需请求即可在WEB-INF下获取文件
问题内容:
我正在尝试获取下的文件(或目录) /WEB-INF/.../
在请求之外。我需要在服务器启动时加载的Bean中使用它。
我可以找到的所有解决方案都希望使用XML文件,ClassPathXmlApplicationContext
或者想要获取servlet上下文的请求,或者使用当前的执行类。在我看来很难看。
我怎样才能得到一个File("/WEB-INF/myDir/")
。必须有一种方法,不!
问题答案:
只要在Web应用程序上下文中声明了bean,就可以获取ServletContext
(使用ServletContextAware
或通过自动装配)的实例。
然后你就可以在webapp目录直接访问文件(getResourceAsStream()
,getRealPath()
),或使用ServletContextResource
。
由momo编辑:
@Autowired
ServletContext servletContext;
... myMethod() {
File rootDir = new File( servletContext.getRealPath("/WEB-INF/myDIR/") );
}