Найти тему
Software development

Реактивное платежное приложение на Spring Boot #2

1) Установка зависимостей и создание контроллера

Для создания реактивного приложения Spring Boot нам понадобится всего одна зависимость spring-boot-starter-webflux.

Версия отсутствует, т.к. этот проект является модулем и есть родительский pom.xml в котором есть spring-boot-starter-parent. Это проект будет "вторым" модулем. Первый уже реализован - это telegram bot.

Теперь добавим контроллер:

-2

Пока что контроллер возвращает заглушку. Mono - не углубляясь, означает, что возвращаем один объект. Если необходимо вернуть коллекцию используем Flux.

Запустим приложение:

-3

Как мы видим запустился не Tomcat, а netty на стандартном для себя порту. Можно использовать и tomcat если добавить его в dependency, а в spring-boot-starter-webflux исключить (exclude) netty, но меня в данный момент все устраивает.

Проверим через postman работу нашего контроллера:

-4

2) Добавим логирование log4j2

Для этого добавим зависимости:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

-5

и исключим logback реализацию (идет по умолчанию) :

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

-6

Теперь осталось создать файл конфигурации log4j2.xml в resources:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
</Console>
<RollingFile name="RollingFile"
fileName="./logs-common-service/common-service.log"
filePattern="./logs-common-service/$${date:yyyy-MM}/common-service-%d{-dd-MMMM-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy
size="50 MB" />
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>

<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>

Этой конфигурации будет на данный момент достаточно. Кратко о ней:

1) Размер файла до 50 мб, далее упаковываем в архив.

2) Храним 10 архивов.

Теперь запустив приложение у нас будет полный debug вывод в консоль и в файл logs-common-service/common-service.log.

На этом пока все. В следующей статье создадим модели запросов/ответов и сервисный слой.