Лет десять назад, когда я начинал заниматься разработкой на Java, подавляющее большинство корпоративных проектов разворачивалось в сервлет-контейнерах, серверах приложений и OSGi-контейнерах. Справедливости ради стоит отметить, что микросервисная архитектура уже тогда будоражила умы разработчиков, а Java EE, Spring и другие фреймворки предоставляли хороший инструментарий для разработки проектов с микросервисной архитектурой. И такие проекты точно так же разворачивались в серверах приложений.
Читать далее Серверы приложений в эру микросервисов и облаковГексагональная архитектура, и как я к ней пришёл
Рано или поздно практически любой разработчик программного обеспечения приходит к поиску архитектурных решений, которые бы облегчали ему процесс разработки и развития проектов. В первую очередь это касается различных шаблонов проектирования, вроде фабрик, посетителей, синглтонов и многих других. Но в какой-то момент становится понятно, что их недостаточно, и нужны какие-то крупномасштабные решения, позволяющие организовать архитектуру всего проекта. В большинстве случаев выбор падает на какую-нибудь многоуровневую архитектуру, одной из главных целей которых является инверсия зависимостей.
Читать далее Гексагональная архитектура, и как я к ней пришёлТестирование сервисов на Spring с 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, реактивные стримы и т.д.
Читать далее Лямбда-выражения в JavaREST API с использованием Spring
Spring Framework WebMVC позволяет разрабатывать не только классические веб-приложения, но и реализовывать REST API. В этой статье я опишу процесс разработки REST API простого проекта на Java с использованием Spring Boot и Spring Framework.
Читать далее REST API с использованием Spring