Использование исключений для управления потоком выполнения является достаточно распространённой практикой. Однако во многих статьях и книгах, посвящённым лучшим практикам, например в замечательной книге Джошуа Блоха “Java — Эффективное программирование“ (Effective Java, Joshua Bloch), даётся рекомендация не использовать исключения как способ ветвления кода.
Читать далее Ветвление кода без исключенийМетка: Java
Отправка SSE из JMS при помощи Spring WebFlux
Когда речь заходит о необходимости отправки сообщений клиенту от сервера по HTTP, варианты решения, как правило, ограничиваются использованием вебсокетов или событий отправляемых сервером (Server-sent Events, SSE). Если требуется отправить клиенту сообщение из JMS, то обычно реализация этой задачи сводится к использованию STOMP через вебсокеты, как это описано в официальной документации Spring Framework.
Читать далее Отправка SSE из JMS при помощи Spring WebFluxВведение в Optional
В JDK 8 был введён новый утилитарный класс java.util.Optional, целями которого являются повышение null-safety и читаемости кода при работе со ссылками, значения которых могут быть null. Главная же цель Optional — замена null-значений, благодаря чему должна повышаться безопасность и читаемость кода.
Optional тесно связан с другими нововведениями JDK 8: Stream и лямбда-выражениями.
Читать далее Введение в OptionalЛямбда-выражения в Java
Поддержка лямбда-выражений, реализованная в Java 8, стала одним из наиболее значимых нововведений за последнее время. Будучи упрощённой записью анонимных классов, лямбды позволяют писать более лаконичный код при работе со Stream или Optional. Лямбда-выражения часто используются как совместно со многими API стандартной библиотеки Java, так и со сторонними API, среди которых JavaFX, реактивные стримы и т.д.
Читать далее Лямбда-выражения в JavaREST API с использованием Spring
Spring Framework WebMVC позволяет разрабатывать не только классические веб-приложения, но и реализовывать REST API. В этой статье я опишу процесс разработки REST API простого проекта на Java с использованием Spring Boot и Spring Framework.
Читать далее REST API с использованием SpringJava и MongoDB: работа с кодеками
В предыдущей публикации я описал базовые операции при работе с MongoDB в Java.
Использовать org.bson.Document для работы с данными, хранящимися в коллекциях далеко не всегда удобно. Как правило, в коллекциях хранятся данные имеющие какую-то определённую структуру, соответствующую, например, POJO-классам вашего проекта.
Для реализации преобразования BSON в объекты соответствующих классов и обратно в драйвере MongoDB предусмотрены кодеки, реализующие интерфейс org.bson.codecs.Codec. В этой публикации я рассмотрю варианты разработки собственного кодека и использования готовых.
Читать далее Java и MongoDB: работа с кодекамиJava и MongoDB: базовые операции
MongoDB — одна из наиболее популярных документноориентированных систем управления баз данных с открытым исходным кодом.
Для использования MongoDB в Java-проектах потребуется синхронный или асинхронный драйвер. В этой статье я опишу работу с синхронным драйвером.
Читать далее Java и MongoDB: базовые операцииУскоряем Spring Boot: Автоконфигурации
Автоконфигурации в Spring Boot содержат большое количество заранее сконфигурированных компонентов, которые вы можете использовать либо без дополнительного конфигурирования, либо с указанием минимальных настроек вроде информации об адресах используемых сервисов, именах пользователей и паролях.
Читать далее Ускоряем Spring Boot: АвтоконфигурацииSpring Framework: Functional Bean Registration
Functional bean registration is a feature that was added to Spring Framework 5. This feature allows to create and register beans in the application context without use of reflection API and also can boost up application startup time.
Читать далее Spring Framework: Functional Bean RegistrationSpring Framework: Функциональная регистрация компонентов
В Spring Framework 5 была добавлена возможность функциональной регистрации компонентов (бинов) в контексте приложения.
Читать далее Spring Framework: Функциональная регистрация компонентов