Использование ByteArrayResource - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть шаблон pdf, который хранится либо в физическом пути, либо в пути к классам приложения. Я должен прочитать этот шаблон и заполнить его поля для каждого запроса на основе пользовательского ввода для любого запроса. Я хочу преобразовать этот файл в байт и сохранить его в компоненте конфигурации во время запуска приложения, вместо этого каждый раз читая файл шаблона. Для этого я могу использовать ByteArrayResource в Spring или любой другой лучший подход.

Моя цель - не каждый раз читать файл шаблона.

1 Ответ

0 голосов
/ 06 ноября 2018

Да, это определенно хорошая идея - кэшировать байтовый массив шаблона, если вам это нужно часто. Но имейте в виду, что это увеличит использование вашей памяти на размер файла.

Использование Spring's ByteArrayResource может быть хорошим подходом для этого, в зависимости от того, что вы используете для обработки шаблона. ByteArrayResource * getInputStream () метод всегда даст вам новый ByteArrayInputStream

Вы можете предоставить bean-компоненту ByteArrayResource такое содержимое:

@Bean
public ByteArrayResource infomailTemplate(@Value("classpath:infomail-template.html") Resource template) throws IOException {
    byte[] templateContent = org.springframework.util.FileCopyUtils.copyToByteArray(template.getFile());
    return new ByteArrayResource(templateContent);
}

, а затем просто autowire это тогда везде, где вам нравится, например:

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