My thoughts about Java application development, Spring Framework, TDD and other…​

My social networks:

My Articles and Blog Posts:

Testing:

How to set dynamic value of properties in spring boot tests (Russian) russian

Как задать динамические значения spring properties для теста.

Support @TestPropertySource as a repeatable annotation (Russian) russian

История моего очередного коммита в Spring Framework, в этот раз исправляем поведение аннотации TestPropertySource так, чтобы можно было ее использовать одновременно в своих мета-аннотациях и локально над тестовыми классами.

How to use the JUnit5 in the Spring Framework 4 (English) english

The workaround for using a modern version of Junit (the JUnit5 Jupiter) with a Spring Framework version older than 5, or SpringBoot version earlier than 2.0.

How to use the Parallel Execution of tests in the JUnit5 (English) english

Example of usage the JUnit5 5.3.0-RC1 to run tests in parallel execution mode.

Asynchronous tests, the Awaitility and uncaught exceptions from other threads (English) english

The story of my research of fragile asynchronous tests in the Spring Framework and uncaught exceptions handling by the Awaitility.

Spring State Machine:

Spring State machine workshop (English) english

Example of using a spring state machine for an automatization of a different kinds of business process.

Spring State machine workshop (Russian) russian

Использование spring state machine для автоматизации бизнес-процессов

Persisting a spring state machine (English) english

How to store a current state of a state machine in the MongoDb and how to test it with the Docker by the testcontainers framework.

Error handling (English) english

How to work with errors that occur in a different parts of the state machine logics.

Spring Cloud:

Spring cloud stack (English) english

Example of using an infrastructure for a microservices application, based on spring cloud stack.

How to use JUnit5 and Spring Cloud Contract (English) english

Example of using a Spring Cloud Contract for testing of the contract between pair of microservices. We consider how to make a full circle of using a Spring Cloud Contract with JUnit5, we will talk about a using TeamCity to build a project and Artifactory for deploy binary of contracts.

Spring Configuration:

Spring auto-configuration & conditional (English) english

Write you own auto-configuration classes with a ConditionalOnBean dependency

Hibernate:

Choosing the right way to initialize a fields of the entity (Russian) english

Варианты инициализации полей сущности, значениями поумолчанию, а так же типичные ошибки при работе с ними. Эта статья послужила материалом для Детективной истории от Баруха Садогурского и Евгения Борисова на конференции jpoint 2018.

разворачиваем прокси (hibernate покажи личико) (Russian) english

Как получить из hibernate proxy сам объект.

Reflection:

создаем новый объект через reflection (Russian) english

Тонкости implicit параметров при создании нового экземпляра объекта.

Concurrency & Garbage Collector:

Soft, Weak & Phantom References in Java (English) english

Consider the differences between the types of references in Java. And look at examples of using a WeakReference, SoftReference & PhantomReference.

Synchronized by the value of the object (English) english

An example of the use of WeakReference for the synchronization by value of object. Also a comparing of benchmark for different ConcurrentMap implementations.

Code conventions:

Code style conventions (English) english

Code style conventions

Annotation processing:

Как подружить lombok и mapstruct (Russian) english

Как использовать сразу два кодо-генератора, да так чтобы задать определенную последовательность их запуска.

Public Talks:

Heisenbug 2019 - Microservice wars (slides) - 18.05.2019 russian

heisenbug

Intro to the Spring Cloud (Live Workshop) - 16.11.2018 russian

 

Spring Cloud Contract - API контракты микросервисов - 12.10.2018 english

 

State machine workshop live video - 18.05.2018 english