#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