Интеграционное тестирование REST API с Cucumber, Spring Restdocs и Spring Cloud Contract

Модульные и интеграционные тесты серьёзно упрощают жизнь простого разработчика, позволяя выявить большую часть ошибок и проблем ещё на ранних стадиях разработки. Отдельного упоминания заслуживают фреймворки Spring Restdocs и Spring Cloud Contract, использование которых в интеграционных тестах позволяет сгенерировать сниппеты, заглушки и контракты тестируемых REST API.

Читать далее Интеграционное тестирование REST API с Cucumber, Spring Restdocs и Spring Cloud Contract

Разработка приложений со Spring. Базовое веб-приложение.

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

Читать далее Разработка приложений со Spring. Базовое веб-приложение.

Spring Data JPA: Волшебные методы

В предыдущем посте я вкратце рассказал о Spring Data JPA и затронул тему «волшебных» методов, приведя простой пример их использования. Однако возможности волшебных методов значительны, благодаря чему ими можно заменить именованные запросы в большинстве случаев.

Читать далее Spring Data JPA: Волшебные методы

Spring Framework и работа с базами данных: Spring Data JPA

В предыдущих постах о работе с базами данных в Spring Framework я поверхностно описал использование JdbcTemplate и NamedParameterJdbcTemplate. Пользоваться данными инструментами безусловно удобно, но у них есть определённые ограничения, среди которых:

  • Зависимость SQL-запросов от конкретной СУБД
  • Необходимость в самостоятельной реализации преобразования данных из БД в экземпляры классов-сущностей
  • Увеличение и усложнение кода при появлении новых таблиц и столбцов в таблицах

В стеке Spring существует проект Spring Data, реализующий большую часть тривиальных задач и упрощающий работу с источниками данных. В качестве источников данных могут использоваться как стандартные реляционные базы данных, так и NoSQL-хранилища вроде MongoDB или Redis.

Читать далее Spring Framework и работа с базами данных: Spring Data JPA

Коротко о PathVariable

Один из распространённых способов передачи параметров запроса — в виде частей адреса запроса. Например, у нас есть страница с контактными данными человека, её адрес выглядит следующим образом:

http://example.com/person/contacts?personId=42

Но, если передать идентификатор человека не параметром personId, а частью адреса запроса, то получится что-то вроде

http://example.com/person/42/contacts

Что выглядит намного понятнее и удобнее.

Для работы с параметрами, передаваемыми через адрес запроса в Spring WebMVC используется аннотация @PathVariable. Читать далее Коротко о PathVariable

Стрим: простое веб-приложение на Spring Boot (завершение)

Продолжаю разработку простого веб-приложения со Spring Boot, показываю реализацию поиска и рассказываю немного о волшебных методах в Spring Data JPA.

Пример веб-приложения на Spring Boot

Отвечая на вопрос «Как отобразить данные из БД» на Тостере, написал небольшое веб-приложение, использующее Spring Framework, Boot и Data и JSP/JSTL в качестве способа отображения страниц. Задача — написать простую книгу отзывов, которая может вывести список отзывов и добавить новый.

Читать далее Пример веб-приложения на Spring Boot

Spring Framework и работа с базами данных: NamedParameterJdbcTemplate

В своём предыдущем посте я описал работу с JdbcTemplate на примере простого DAO-класса. Возможностей JdbcTemplate вполне хватает, что бы сделать работу с базами данными немного проще. Но использование вопросительного знака в качестве плейсхолдера для параметра запроса не всегда удобно, особенно, когда речь идёт о работе с таблицами, имеющими большое количество колонок. В этом случае удобнее будет использовать класс NamedParameterJdbcTemplate, который позволяет использовать именованные параметры в SQL-запросах. Читать далее Spring Framework и работа с базами данных: NamedParameterJdbcTemplate

Spring Framework и работа с базами данных: JdbcTemplate

Для работы с реляционными базами данных в Spring Framework предусмотрен такой замечательный инструмент как JdbcTemplate, который является обвязкой вокруг стандартных средств JDBC. JdbcTemplate прост и гибок в применении, его возможностей вполне достаточно для реализации проектов малых и средних размеров. В JDBCTemplate не предусмотрены стандартные средства ORM в отличии от Hibernate или JPA, так что при его использовании нужно самостоятельно писать мапперы, которые будут преобразовывать данные полученные из БД в объекты классов сущностей.

Читать далее Spring Framework и работа с базами данных: JdbcTemplate

Spring Framework и инициализация компонентов

Создание компонентов

Основными элементами в контексте приложения, использующего Spring Framework, являются компоненты или бины (beans), используемые для внедрения зависимостей (Dependency Injection, DI). Есть два основных способа создания таких компонентов.

Создание компонента при помощи аннотаций

Самый простой и наиболее распространённый способ создания компонента — при помощи аннотации @Component или аннотаций, наследующих её, таких как @Service, @Repository или @Controller из пакета org.springframework.stereotype. Читать далее Spring Framework и инициализация компонентов