Совет💡
Будьте осторожны при использовании
👉@BookJava
Будьте осторожны при использовании
@AllArgsConstructor
от Lombok. Для генерации конструктора он использует порядок полей в классе. Если поля имеют одинаковый тип и вы переставите их местами, то начнете писать в разные поля, и компилятор не сможет помочь.👉@BookJava
👍14
Советы по Spring 💡
Создайте отказоустойчивый микросервис с помощью паттерна
https://resilience4j.readme.io/
👉@BookJava
Создайте отказоустойчивый микросервис с помощью паттерна
Circuit Breake
r, используя Resilience4j. 🔥https://resilience4j.readme.io/
👉@BookJava
👍6
Совет по Java 💡
Чтобы сделать большие и сложные цепочки компараторов более читаемыми, мне нравится присваивать компараторы переменным, имена которых начинаются с "by". Таким образом, вызов
👉@BookJava
Чтобы сделать большие и сложные цепочки компараторов более читаемыми, мне нравится присваивать компараторы переменным, имена которых начинаются с "by". Таким образом, вызов
sorted()
становится меньше и читается почти как естественный язык. Кроме того, вы можете использовать статический импорт.👉@BookJava
👍17🔥2
Советы по Spring🚀
Ведение журнала HTTP-запросов с помощью фильтра
Включите ведение журнала запросов с помощью фильтра
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html
#SpringTip #Java
👉@BookJava
Ведение журнала HTTP-запросов с помощью фильтра
CommonsRequestLoggingFilter
.Включите ведение журнала запросов с помощью фильтра
CommonsRequestLoggingFilter
для получения подробной информации о входящих запросах. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html
#SpringTip #Java
👉@BookJava
docs.spring.io
CommonsRequestLoggingFilter (Spring Framework 6.2.3 API)
declaration: package: org.springframework.web.filter, class: CommonsRequestLoggingFilter
👍6🎉3
Spring WebFlux с Server-Sent Events 🚀
Улучшите свои real-time приложения с помощью #SpringWebFlux и Server-Sent Events! 🔥
#Java #SpringFramework
👉@BookJava
Улучшите свои real-time приложения с помощью #SpringWebFlux и Server-Sent Events! 🔥
#Java #SpringFramework
👉@BookJava
🔥5👍2
Совет по Java 💡
При создании стандартных HTTP-заголовков для ответов Spring MVC, вместо того чтобы предоставлять их в виде строк, можно воспользоваться специальными билдерами. Они позволяют создавать заголовки более типобезопасным способом. Ознакомьтесь с методами `
#Java #SpringFramework
👉@BookJava
При создании стандартных HTTP-заголовков для ответов Spring MVC, вместо того чтобы предоставлять их в виде строк, можно воспользоваться специальными билдерами. Они позволяют создавать заголовки более типобезопасным способом. Ознакомьтесь с методами `
set()
` класса `HttpHeaders
`, которые можно настроить таким образом.#Java #SpringFramework
👉@BookJava
👍6❤1
Это очень подробный пост о проблеме, которую мы наблюдали в Virtual Threads с " pinning" в Netflix.
https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d
#Java #VirtualThreads
👉@BookJava
https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d
#Java #VirtualThreads
👉@BookJava
👍3
Совет по JPA 🚀
Упростите свои #Java модели данных, встраивая сложные типы непосредственно в ваши сущности с помощью аннотации
#Hibernate #SpringBoot #JavaDevelopment #ORM
👉@BookJava
Упростите свои #Java модели данных, встраивая сложные типы непосредственно в ваши сущности с помощью аннотации
@Embedded
в @JPA
! Это идеально подходит для многократно используемых компонентов, таких как адреса. 🔥#Hibernate #SpringBoot #JavaDevelopment #ORM
👉@BookJava
👍7
Совет по
Если вы используете параметр
#Java
👉@BookJava
@SpringData
Если вы используете параметр
hibernate.use_sql_comments
, чтобы показать, какой запрос JPQL вызвал какой SQL запрос, вы можете дополнительно использовать аннотацию (@)Meta
из Spring Data JPA, чтобы задать пользовательский комментарий для вашего JPQL запроса.#Java
👉@BookJava
👍3🔥2🥰1
Адаптер (Adapter) — объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс.
Мост (Bridge) — структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.
Компоновщик (Composite) — объект, который объединяет в себе объекты, подобные ему самому.
Декоратор (Decorator) — класс, расширяющий функциональность другого класса без использования наследования.
Фасад (Facade) — объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.
Приспособленец (Flyweight) — это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.
Заместитель (Proxy) — объект, который является посредником между двумя другими объектами, и который реализует/ограничивает доступ к объекту, к которому обращаются через него.
👉@BookJava
Мост (Bridge) — структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.
Компоновщик (Composite) — объект, который объединяет в себе объекты, подобные ему самому.
Декоратор (Decorator) — класс, расширяющий функциональность другого класса без использования наследования.
Фасад (Facade) — объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.
Приспособленец (Flyweight) — это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.
Заместитель (Proxy) — объект, который является посредником между двумя другими объектами, и который реализует/ограничивает доступ к объекту, к которому обращаются через него.
👉@BookJava
👍15
🚀 Совет по Java API 🚀
java.nio.file.WatchService - мониторинг событий файловой системы в реальном времени. Обнаружение изменений файлов и директорий независимо от платформы. 🔥
https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/nio/file/WatchService.html
#Java #JavaAPI
👉@BookJava
java.nio.file.WatchService - мониторинг событий файловой системы в реальном времени. Обнаружение изменений файлов и директорий независимо от платформы. 🔥
https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/nio/file/WatchService.html
#Java #JavaAPI
👉@BookJava
Oracle
WatchService (Java SE 22 & JDK 22)
declaration: module: java.base, package: java.nio.file, interface: WatchService
👍5🥱2
Советы по Spring Boot💡
Улучшите сборку образа контейнера
https://paketo.io/docs/howto/java/#install-a-minimal-jre-with-jlink
#SpringBoot #Java
👉@BookJava
Улучшите сборку образа контейнера
@springboot
с помощью #Jlink! https://paketo.io/docs/howto/java/#install-a-minimal-jre-with-jlink
#SpringBoot #Java
👉@BookJava
👍5
Media is too big
VIEW IN TELEGRAM
Структурированная конкуренция
Структурированная конкуренция рассматривает группы связанных задач, выполняющихся в разных потоках, как единое целое. Она упрощает обработку ошибок и отмену задач, повышает надежность, улучшает наблюдаемость и отлично сочетается с виртуальными потоками. В этом сеансе мы познакомим вас с этой концепцией и с API, который в настоящее время находится в предварительном просмотре и поддерживает эту функцию.
источник
👉@BookJava
Структурированная конкуренция рассматривает группы связанных задач, выполняющихся в разных потоках, как единое целое. Она упрощает обработку ошибок и отмену задач, повышает надежность, улучшает наблюдаемость и отлично сочетается с виртуальными потоками. В этом сеансе мы познакомим вас с этой концепцией и с API, который в настоящее время находится в предварительном просмотре и поддерживает эту функцию.
источник
👉@BookJava
👍6
Media is too big
VIEW IN TELEGRAM
Spring Data JDBC. Проблемы известные, проблемы неизвестные
Михаил Поливаха
Spring Data JDBC — относительно новый модуль Spring Data. У него своя концепция, свои фичи, свои баги и проблемы. Часть этих проблем известна аудитории и описана в документации. Однако иногда документация врет или недоговаривает. К тому же есть некоторые неочевидные детали реализации, которые могут смутить пользователей библиотеки. Это касается многих аспектов — от генерации SQL до маппинга сущностей.
Во время доклада мы посмотрели на ряд подобных сюрпризов, обсудим, баг это или фича и что разработчики планируют с этим делать. Также рассмотрели текущее состояние проекта Spring Data JDBC — над чем идет работа, что исправляется, а что пока нет.
источник
👉@BookJava
Михаил Поливаха
Spring Data JDBC — относительно новый модуль Spring Data. У него своя концепция, свои фичи, свои баги и проблемы. Часть этих проблем известна аудитории и описана в документации. Однако иногда документация врет или недоговаривает. К тому же есть некоторые неочевидные детали реализации, которые могут смутить пользователей библиотеки. Это касается многих аспектов — от генерации SQL до маппинга сущностей.
Во время доклада мы посмотрели на ряд подобных сюрпризов, обсудим, баг это или фича и что разработчики планируют с этим делать. Также рассмотрели текущее состояние проекта Spring Data JDBC — над чем идет работа, что исправляется, а что пока нет.
источник
👉@BookJava
👍11❤1
В чём разница между jar и war?
jar и war – расширения платформо-независимых файлов-архивов Java-приложения. Кроме них есть еще третий формат, ear. Все эти форматы – на самом деле просто zip-архивы с классами и другими частями приложения. Вы можете переименовать такой файл в .zip, разархивировать, и посмотреть, что внутри.
JAR – Java Archive. Содержит файлы классов, ресурсы, зависимые библиотеки, и другие необходимые для приложения файлы. Может содержать точку входа, и использоваться как цель для исполнения команды java.
WAR – Web Archive. Технически имеет ту же структуру, но другую роль – архив JavaEE web-компонента. Обычно содержит jar-ы с реализацией, JSP, статические файлы фронт-энда, и мета-информацию для сервлет-контейнера (web.xml). В основном используется как деплоймент web-приложения в сервлет-контейнер. С приходом Servlet API 3.0 и embedded-контейнеров, всё больше становится принято запаковывать и web-компоненты в самодостаточные jar (Лозунг Spring Boot: Make jar, not war).
EAR – Enterprise Archive. Для разработчиков, начавших карьеру уже во времена Spring Framework, может показаться совсем экзотичным. Это собранное воедино монолитное JavaEE приложение. Содержит дескрипторы деплоймента и JavaEE модули (веб-модули, EJB, клиентские модули, адаптеры ресурсов). Деплоится в JavaEE Application Server.
Все три типа файлов собираются утилитой jar из JDK.
👉@BookJava
jar и war – расширения платформо-независимых файлов-архивов Java-приложения. Кроме них есть еще третий формат, ear. Все эти форматы – на самом деле просто zip-архивы с классами и другими частями приложения. Вы можете переименовать такой файл в .zip, разархивировать, и посмотреть, что внутри.
JAR – Java Archive. Содержит файлы классов, ресурсы, зависимые библиотеки, и другие необходимые для приложения файлы. Может содержать точку входа, и использоваться как цель для исполнения команды java.
WAR – Web Archive. Технически имеет ту же структуру, но другую роль – архив JavaEE web-компонента. Обычно содержит jar-ы с реализацией, JSP, статические файлы фронт-энда, и мета-информацию для сервлет-контейнера (web.xml). В основном используется как деплоймент web-приложения в сервлет-контейнер. С приходом Servlet API 3.0 и embedded-контейнеров, всё больше становится принято запаковывать и web-компоненты в самодостаточные jar (Лозунг Spring Boot: Make jar, not war).
EAR – Enterprise Archive. Для разработчиков, начавших карьеру уже во времена Spring Framework, может показаться совсем экзотичным. Это собранное воедино монолитное JavaEE приложение. Содержит дескрипторы деплоймента и JavaEE модули (веб-модули, EJB, клиентские модули, адаптеры ресурсов). Деплоится в JavaEE Application Server.
Все три типа файлов собираются утилитой jar из JDK.
👉@BookJava
👍7🔥3
Совет по Spring MongoDB 💡
Определение выражений сортировки с использованием type-safe API 🔥
👉@BookJava
Определение выражений сортировки с использованием type-safe API 🔥
👉@BookJava
❤4👍1
Совет по Spring Boot💡
Улучшите сборку образа контейнера
https://paketo.io/docs/howto/java/#install-a-minimal-jre-with-jlink
#SpringBoot #Java
👉@BookJava
Улучшите сборку образа контейнера
@springboot
с помощью #Jlink! 🔥https://paketo.io/docs/howto/java/#install-a-minimal-jre-with-jlink
#SpringBoot #Java
👉@BookJava
❤5👍1
Аудит в Spring Data MongoDB💡
Используйте аннотации
#SpringData
👉@BookJava
Используйте аннотации
@CreatedBy
, @LastModifiedBy
, @CreatedDate
и @LastModifiedDate
для автоматического отслеживания времени создания и изменения сущностей, а также пользователя, ответственного за изменения. 🔥#SpringData
👉@BookJava
🥰5👍3
Советы по Spring Batch 💡
Оптимизируйте свои шаги в
#Java #SpringBatch
👉@BookJava
Оптимизируйте свои шаги в
@SpringBatch
с помощью параметра `startLimit
` и определите, сколько раз можно запустить шаг. 🔥#Java #SpringBatch
👉@BookJava
👍4
🚀 Совет по API Java 🚀
java.util.IdentityHashMap
В отличие от
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/IdentityHashMap.html
👉@BookJava
java.util.IdentityHashMap
В отличие от
HashMap
, этот класс использует равенство ссылок (==), а не равенство объектов (equals()
) для определения уникальности ключей, что делает его подходящим для конкретных случаев использования. 🔥https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/IdentityHashMap.html
👉@BookJava
Oracle
IdentityHashMap (Java SE 21 & JDK 21)
declaration: module: java.base, package: java.util, class: IdentityHashMap
👍6