Серверы приложений в эру микросервисов и облаков

WildFly

Лет десять назад, когда я начинал заниматься разработкой на Java, подавляющее большинство корпоративных проектов разворачивалось в сервлет-контейнерах, серверах приложений и OSGi-контейнерах. Справедливости ради стоит отметить, что микросервисная архитектура уже тогда будоражила умы разработчиков, а Java EE, Spring и другие фреймворки предоставляли хороший инструментарий для разработки проектов с микросервисной архитектурой. И такие проекты точно так же разворачивались в серверах приложений.

Читать далее Серверы приложений в эру микросервисов и облаков

Гексагональная архитектура, и как я к ней пришёл

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

Читать далее Гексагональная архитектура, и как я к ней пришёл

Тестирование сервисов на Spring с Testcontainers

Testcontainers

Нередко даже для тестирования небольших проектов требуется наличие определённой инфраструктуры: баз данных, брокеров очередей сообщений, кеш-серверов и т.д. Можно использовать какие-то встраиваемые решения, но не факт, что они на 100% соответствуют требованиям проекта. Так, например, популярная встраиваемая СУБД H2 не имеет полной поддержки всех типов PostgreSQL. Можно развёртывать для тестирования всю необходимую инфраструктуру, но это несёт дополнительные затраты, в том числе и на сопровождение. Кроме того разработчикам, возможно, придётся разворачивать тестовую инфраструктуру локально на своих ПК, что тоже не всегда удобно.

Читать далее Тестирование сервисов на Spring с Testcontainers

Отправка SSE из JMS при помощи Spring WebFlux

Когда речь заходит о необходимости отправки сообщений клиенту от сервера по HTTP, варианты решения, как правило, ограничиваются использованием вебсокетов или событий отправляемых сервером (Server-sent Events, SSE). Если требуется отправить клиенту сообщение из JMS, то обычно реализация этой задачи сводится к использованию STOMP через вебсокеты, как это описано в официальной документации Spring Framework.

Читать далее Отправка SSE из JMS при помощи Spring WebFlux

Начало разработки веб-приложений с Java и Spring

В этом цикле статей я опишу процесс разработки веб-приложения на Java и Spring на примере разработки простого интеренет-магазина. Цикл статей разбит таким образом, чтобы в каждой статье описывался процесс работы с одной технологией или с одной группой взаимосвязанных технологий.

Читать далее Начало разработки веб-приложений с Java и Spring

Инверсия управления: внедрение и поиск зависимостей

Инверсия управления — один из популярных принципов объектно-ориентированного программирования, при помощи которого можно снизить связанность между компонентами, а так же повысить модульность и расширяемость ПО.

Читать далее Инверсия управления: внедрение и поиск зависимостей

Spring Framework JDBC: вставка записей при помощи SimpleJdbcInsert

Spring Framework JDBC позволяет реализовать любое взаимодействие с РСУБД при помощи JdbcOperations и его реализаций, однако это предполагает написание SQL-запросов. Но для наиболее типовых ситуаций Spring Framework JDBC предоставляет интерфейсы и классы, ориентированные на конкретные операции, позволяющие в отдельных случаях обходиться без написания SQL-кода. В этой статье речь пойдёт об интерфейсе SimpleJdbcInsertOperations и его реалилизациях, позволяющих реализовать вставку записей в таблицы без SQL-кода.

Читать далее Spring Framework JDBC: вставка записей при помощи SimpleJdbcInsert

Введение в 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, реактивные стримы и т.д.

Читать далее Лямбда-выражения в Java

REST API с использованием Spring

Spring Framework WebMVC позволяет разрабатывать не только классические веб-приложения, но и реализовывать REST API. В этой статье я опишу процесс разработки REST API простого проекта на Java с использованием Spring Boot и Spring Framework.

Читать далее REST API с использованием Spring