FileSytemResources в Spring Framework - PullRequest
       17

FileSytemResources в Spring Framework

3 голосов
/ 04 марта 2010

Я пытаюсь получить XML-файл (содержащий определение bean-компонента) в моем проекте Spring MVC. Если у меня есть файл xml в каталоге WEB-INF, то какой путь мне следует указать в FileSystemResource в моем сервлете для получения XML?

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

Спасибо

1 Ответ

2 голосов
/ 04 марта 2010

Вы не должны использовать FileSystemResource, вы должны использовать ServletContextResource:

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

Предполагая, конечно, что вам доступен servletContext.

Если вы действительно хотите использовать FileSystemResource, вам нужно спросить контейнер, где находится каталог, и использовать его в качестве относительного пути, например,

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

Тем не менее проще позволить Spring сделать всю работу за вас. Скажем, у вас есть боб, который нуждается в этом Resource. Вы можете добавить путь к ресурсу в виде строки и позволить Spring преобразовать его в ресурс, например

public class MyBean {

   private Resource myResource;

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

и в вашем бобовом файле:

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

Spring преобразует путь ресурса в ServletContextResource и передает его вашему бобу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...