【发布时间】:2010-06-10 20:42:53
【问题描述】:
有没有办法使用简单的资源在 Spring Web 应用程序中获取资源?我试图不传递任何上下文,并且需要从 WEB-INF/freemarker/email/ 目录中获取文件。
【问题讨论】:
标签: java spring servlets resources
有没有办法使用简单的资源在 Spring Web 应用程序中获取资源?我试图不传递任何上下文,并且需要从 WEB-INF/freemarker/email/ 目录中获取文件。
【问题讨论】:
标签: java spring servlets resources
没有。由于WEB-INF/freemaker/email 在类路径中不是,因此您需要传递ServletContext。正如您提到的Resource,您可以使用:
Resource resource = new ServletContextResource(servletContext, resourcePath);
只是不要将ServletContext 传递给服务层。改为传递Resource。
如果您想从类路径中获取模板,请将其放在那里。也就是说,例如在:
WEB-INF/classes/freemaker/email
那么你可以使用ClassPathResource
【讨论】:
您可以在您的类中实现 org.springframework.context.ResourceLoaderAware 接口并访问 ResourceLoader。它相当容易使用。
public class SomeService implements ResourceLoaderAware {
private ResourceLoader resourceLoader;
public void doSomething() {
Resource skin = resourceLoader.getResource("myfile.txt");
}
@Override
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
}
【讨论】: