Oleg Atamanenko

thoughts about programming

Category: spring

Automatic query modification with Spring Data Mongo

Introduction Today I want to show how one can automatically apply additional restrictions on MongoDB Queries with MongoTemplate or Spring Data Mongo. Implementation First, let’s introduce interface QueryModifier. import org.springframework.data.mongodb.core.query.Query; public interface QueryModifier { /** * Modifies source query according to the rules.

Continue Reading…

Пишем @Enable*-аннотацию для Spring

Начиная с версии 3.1 Spring поддерживает декларативное включение необходимой функциональности через, так называемые, @Enable* аннотации. Пример таких аннотаций: org.springframework.web.servlet.config.annotation.EnableWebMvc, org.springframework.cache.annotation.EnableCaching, org.springframework.scheduling.annotation.EnableAsync и другие. В продолжение темы прошлого поста, я хочу показать, как можно добавить собственную @Enable аннотацию.

Continue Reading…

@Autowired JAX-RS Client API

Продолжая разговор о JAX RS Client API - предположим, что мы уже используем JAX-RS клиент У нас есть класс, который умеет создавать прокси для любого REST-интерфейса в проекте. Теперь мы хотим сделать так, чтобы эти интерфейсы можно было автоматически создавать в контексте Spring и связывать с другими бинами.

Continue Reading…

Использование BeanPostProcessor на примере журналирования

Сегодня я хочу рассказать, как можно сделать инициализацию логгера в классе с использованием аннотаций и BeanPostProcessor Очень часто мы инициализируем логгер следующим образом: public class MyClass { private static final Logger LOG = LoggerFactory.

Continue Reading…

Упрощаем работу с JPA при помощи Spring Data JPA

Введение Уже прошло несколько лет с тех пор, как появился JPA. Работа с EntityManager увлекательна, но разработчики пишут красивый API, а подробности работы с базой данных скрывают. При этом частая проблема - дублирование имплементации, когда из одного DAO в другой у нас плавно перекочёвывает один и тот же код, в лучшем случае этот код переносится в абстрактный базовый DAO.

Continue Reading…