Sharing knowledge

by Oleg Atamanenko

Валидация входных параметров с использованием Spring

Очень часто возникает задача проверки входных параметров в сервис на корректность с точки зрения бизнес логики. Эту задачу можно решить в лоб, написав вручную код валидации в каждом из методов сервиса, например, вот так: public User save(User user) { if(user == null) { throw new IllegalArgumentException("User is null"); } // other checks //.

Использование memcached в качестве backend для Spring Caching Abstraction

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

Пишем валидатор для Bean Validation API

JSR-303 предоставляет удобный API для проверки валидности объектов, а также входных параметров. Очевидно, что стандартных валидаторов в какой-то момент может быть недостаточно, поэтому необходимо писать собственный. Хочу показать на примере валидации запроса к MongoDB, как легко это делается. Создание аннотации @Target({FIELD, PARAMETER}) @Retention(RUNTIME) @Documented @Constraint(validatedBy = {MongoQueryValidator.

Автоматизируем работу с виртуальными машинами с помощью Vagrant

Современные enterprise проекты очень часто имеют очень сложную инфраструктуру для развёртывания. Кроме того, во время разработки часто используются виртуальные машины. Например, может использоваться несколько виртуальных машин, на которых развёрнуты различные конфигурации софта. Vagrant - это средство для управления виртуальными машинами на базе Virtualbox.

Собственная реализация методов в Spring Data JPA

Очевидно, что мы не всегда можем воспользоваться автоматической генерацией кода, предоставляемой Spring Data JPA. Например, у нас слишком сложный запрос, или нам необходимо вызвать процедуру в базе данных, либо у нас сложная бизнес-логика. Рассмотрим следующий пример - например, нам нужна функциональность уникального счётчика, который мы решили реализовать с помощью последовательности (sequence).