Весенняя загрузка: не удается найти файл, расположенный в папке ресурсов с аннотацией @Value

#spring #spring-boot

#весна #весенняя загрузка

Вопрос:

Простая проблема (я думаю): я пытаюсь загрузить файлы с @Value аннотацией, но Spring Boot не видит там файл.

 @Value("classpath:/*.xlsx")
private Resource[] inputResources;
  

Я использую inputResources в качестве входных данных метод Spring Batch, который затем извлекает все файлы, соответствующие моему шаблону.

 MultiResourceItemReader<Employee> resourceItemReader = new MultiResourceItemReader<Employee>();
resourceItemReader.setResources(inputResources);
  

Электронные таблицы Excel находятся в моей resources папке. Есть ли причина, по которой это не сработает??

Ответ №1:

Аннотация @Value используется в Spring для чтения одного значения из файла свойств. Его нельзя использовать для чтения всего файла.

Чтобы прочитать файл, попробуйте что-то вроде этого:

 Resource resource = new ClassPathResource("classpath:data.txt");
InputStream inputStream = resource.getInputStream();
...
  

Вы могли бы использовать @Value для получения этой строки «classpath:data.txt » не жестко закодировано.

Комментарии:

1. Наверное, я оговорился. Я следую примеру, в котором имена файлов задаются в качестве входных данных для метода, который Spring позже извлекает. Я получаю сообщение об ошибке, что в этом месте нет ресурсов. Я отредактирую свой вопрос.

2. Неверно, на самом деле вы можете использовать @Value для загрузки ссылки на ресурсы: baeldung.com/spring-load-resource-as-string#using-spel