Нередко даже для тестирования небольших проектов требуется наличие определённой инфраструктуры: баз данных, брокеров очередей сообщений, кеш-серверов и т.д. Можно использовать какие-то встраиваемые решения, но не факт, что они на 100% соответствуют требованиям проекта. Так, например, популярная встраиваемая СУБД H2 не имеет полной поддержки всех типов PostgreSQL. Можно развёртывать для тестирования всю необходимую инфраструктуру, но это несёт дополнительные затраты, в том числе и на сопровождение. Кроме того разработчикам, возможно, придётся разворачивать тестовую инфраструктуру локально на своих ПК, что тоже не всегда удобно.
Читать далее Тестирование сервисов на Spring с TestcontainersАвтор: Alexander Kosarev
Отправка 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Реактивное веб-приложение с Kotlin и Spring
В этой статье я рассмотрю пример использования Kotlin, Spring и MongoDB при разработке полностью реактивного веб-приложения.
Reactive Web with Kotlin and Spring
Java и MongoDB: работа с кодеками
В предыдущей публикации я описал базовые операции при работе с MongoDB в Java.
Использовать org.bson.Document для работы с данными, хранящимися в коллекциях далеко не всегда удобно. Как правило, в коллекциях хранятся данные имеющие какую-то определённую структуру, соответствующую, например, POJO-классам вашего проекта.
Для реализации преобразования BSON в объекты соответствующих классов и обратно в драйвере MongoDB предусмотрены кодеки, реализующие интерфейс org.bson.codecs.Codec. В этой публикации я рассмотрю варианты разработки собственного кодека и использования готовых.
Читать далее Java и MongoDB: работа с кодеками