Код: Выделить всё
try (BufferedInputStrea stream = new BufferedInputStream(inputStream)) {
// some logic
}
Код: Выделить всё
servletRequest.getInputStream()Меня беспокоит следующее:
Приведенный выше код закроет объект BufferedInputStream, который закроет базовый поток ввода, полученный из сервлета. и теоретически я НЕ ДОЛЖЕН этого делать, поскольку сервлет будет управлять своим потоком при закрытии (поэтому он закроет его самостоятельно).
Итак, если я не хочу закрывать поток я должен создать новый класс Stream, который расширяет BufferedInputStream и добавляет пустой метод закрытия, чтобы он не закрывал базовый поток.
Конечно, я могу иметь анонимную реализацию, которая будет эффективно делать то же самое.
Мне оба решения кажутся уродливыми, но другого варианта я не вижу.
Другой вариант — не закрывать объект BufferedInputStream, а сделать это Я должен быть уверен, что у него нет никаких внутренних ресурсы должны быть освобождены.
Для меня это очень простой случай, который должен случаться довольно часто, и мне интересно, какие здесь лучшие практики.
Я использую Java 11 и загрузку Spring (если это вообще имеет значение)
Подробнее здесь: https://stackoverflow.com/questions/793 ... am-wrapped
Мобильная версия