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/") );
}