Загрузка вложенного ресурса из пути к классам в Spring Boot - PullRequest
0 голосов
/ 17 октября 2019

Spring Boot 2.1.5. ВЫПУСКАЙТЕ здесь. Я пытаюсь загрузить ресурс из каталога src/main/resources/images. Моя лучшая попытка на данный момент:

URL url = getClass().getResource("classpath:images/my_logo.png");
if (url == null) {
  log.warn("Hmmm not found...");
} else {
  log.info("Found it!");
}

Во время выполнения печатается предупреждение " Хммм не найдено ... ", но файл абсолютно расположен вsrc/main/resources/images/my_logo.png. Куда я иду наперекосяк?

Ответы [ 2 ]

4 голосов
/ 17 октября 2019

Поскольку вы уже используете Spring, попробуйте использовать один из их загрузчиков ресурсов

URL url = new PathMatchingResourcePatternResolver( null ).getResource( "classpath:/images/my_logo.png" ).getURL();

Примечание: я добавил косую черту в путь.

РЕДАКТИРОВАТЬ : Я проверил комментарий @ duffymo, и он был правильным. Ведущий слеш не нужен.

0 голосов
/ 17 октября 2019

Существует также другой способ извлечения ресурсов в Spring, но Javadoc ResourceUtils ясно, что класс предназначен в основном для внутреннего использования.

String file = ResourceUtils.getFile("images/my_logo.png").getAbsolutePath();

Или с помощью ClassPathResource

URL clsPath =  new ClassPathResource("images/my_logo.png").getURL();
...