9.8 KiB
Modules
Installation via Gradle Composite Build
-
Add this repository as a git submodule to your project
-
Add these lines to your
settings.gradle.kts:includeBuild("Backend-common") -
Use TLK modules as dependencies of your project
dependencies { implementation("ru.touchin:common") }
common
Набор утилит, структур данных, исключений без привязки к spring
ExecutionContext- класс для хранения/получения данных из текущего потокаSecureRandomStringGenerator- генератор случайной строки по словарюerrors.*- базовые исключения<type>.*Utils- утилиты для различных типов данных
common-spring
Набор утилит, структур данных для spring, без привязки к доп. модулям, таким как jpa и web
common-spring-jpa
models.*- базовыеEntityrepositories- утилиты и доп. интерфейсы для репозиториевliquibase.LiquibaseStart- для подключения этого компонента необходимо объявитьliquibase.LiquibaseParams. Указать путь к файлу с миграцией и схему, для которой эта миграция будет применяться. С помощьюLiquibaseStartможно применить кастомную миграцию не конфликтуя с основной.EnableJpaAuditingExtra- подключениеJpaAuditingс поддержкой типаZoneDateTime
common-spring-web
request.Utils- различныеextensionsдля работы сHttpServletRequesterrors.*- исключения и типы данных дляwebwebclient.*- классы для расширения webclient, включая логирование
common-spring-security
configurations.DefaultSecurityConfiguration- дефолтная реализация WebSecurity, определяет для каких request path надо ограничить доступ. Используетurl.interceptors.UrlExpressionRegistryInterceptorдля принятия решения.auditor.AuditorResolver- служит для преобразованияprincipalв строку, используется сJpaAuditing
common-spring-security-jpa
auditor.SecurityAuditorAware- резолвит имя пользователя для полей@CreatedBy,@LastModifiedBy. Требуется явно создать бинAuditorAware<String>в проекте.
common-spring-test
Утилиты для тестирования в среде spring-test
common-spring-test-jpa
Утилиты для тестирования репозиториев
logger
Основные компоненты логирования:
- layout
- context
- format
logger-spring
Встраивание системы логирования в spring
- autologging
- serializer
logger-spring-web
Interceptor для логирования запросов/ответов.
exception-handler-spring-web
Перехватывает ошибки сервера, определяет код ошибки и возвращает их в правильный response.
Подключается с помощью аннотации @EnableSpringExceptionHandler
exception-handler-logger-spring-web
Добавляет логирование в обработку ошибок.
Подключается с помощью аннотации @EnableSpringExceptionHandlerLogger до подключения основного модуля.
validation-spring
Добавляет аннотации для валидации запросов.
version-spring-web
Добавляет возможность задавать версию апи через properties без необходимости явно указывать в каждом маппинге
response-wrapper-spring-web
Добавляет обертку для успешного ответа
common-measure
Утилиты для работы с measure
common-measure-spring
Возможность задавать measure через properties
common-geo
Интерфейс для работы с гео-данными
common-geo-spatial4j-spring
Реализация интерфейса GeoCalculator с помощью библиотеки spatial4j
settings-spring-jpa
Модуль для хранения настроек
security-authorization-server-core
Модуль авторизации
security-authorization-server-jwt-core
Добавляет поддержку jwt-токенов (создание/хранение). Для работы этого модуля требуется прописать в пропертях:
token.access:
issuer: ${app.issuer}
timeToLive: PT15M # 15 minutes
signatureAlgorithm: RS256
keyPair:
public: |
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
private: |
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
token.refresh:
length: 20
prefix: RT-
timeToLive: PT2H # 2 hours
Генерация ключей:
openssl genrsa -out private.pem 4096
openssl rsa -in private.pem -pubout -out public.pem
openssl pkcs8 -topk8 -inform PEM -in private.pem -out private_key.pem -nocrypt
cat private_key.pem
cat public.pem
security-authorization-server-oauth2-metadata
OAuth2 metadata support.
security-jwt-common
JWT related utilities.
security-resource-server-default-configuration
Default configuration for the Spring OAuth2 resource server with JWT auth.
security-resource-server-custom-configuration
Custom configuration for the Spring OAuth2 resource server with JWT auth. Requires the following properties:
token.access:
issuer: ${app.issuer}
signatureAlgorithm: RS256
keyPair:
public: |
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
security-resource-server-test-configuration
Disables Spring OAuth2 resource server for testing.
s3-storage
Amazon S3 support.
server-info-spring-web
Allow include headers with information about the server in responses
To get started you need:
- Add annotation to configuration
- Add property to yml/properties file:
server.info:
buildVersion: ${buildVersion}
- Implement ServerInfoService (optional. If you want to add other headers)
- Add dir with impl ServerInfoService in ComponentScan annotation
push-message-provider
Интерфейсы и компоненты для модулей по обеспечению интеграции с сервисами отправки пуш-уведомлений.
push-message-provider-fcm
Модуль по обеспечению интеграции с Firebase Cloud Messaging.
- Подключение компонентов Spring осуществляется при помощи аннотации
@EnablePushMessageProviderFcm. - Необходимо добавление конфигурации для модуля с выбранным способом хранения данных для авторизации. Пример файла конфигурации в формате yaml:
push-message-provider:
platformProviders:
ANDROID_GOOGLE:
- FCM
IOS:
- FCM
fcm:
appName: # Название приложения
auth:
# Выбранный тип авторизации
client:
readTimeout: 10s
connectionTimeout: 1s
- Настраивается способ предоставления авторизации для Firebase Cloud Messaging.
А) Токен доступа из консоли Google, добавляемый в конфигурацию настроек:
auth:
token:
value: testValue
expiresAt: 2023-01-01 23:59:59 +00:00
B) Данные в файле из консоли Firebase, добавляемые в resources с обозначением пути в конфигурации настроек:
auth:
credentialsFile:
path: credentials/firebase-admin.json
C) Данные из файла консоли Firebase, добавляемые в конфигурацию настроек:
auth:
credentialsData:
type: service_account
projectId: testProjectId
privateKeyId: testPrivateKeyId
privateKey: |
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALfBshaLMW2yddmAZJRNXTZzcSbwvY93Dnjj6naWgoBJoB3mOM5bcoyWwBw12A4rwecorz74OUOc6zdqX3j8hwsSyzgAUStKM5PkOvPNRKsI4eXAWU0fmb8h1jyXwftl7EzeBjEMBTpyXkgDk3wLfHN6ciCZrnQndOvS+mMl3b0hAgMBAAECgYEAmIQZByMSrITR0ewCDyFDO52HjhWEkF310hsBkNoNiOMTFZ3vCj/WjJ/W5dM+90wUTYN0KOSnytmkVUNh6K5Yekn+yRg/mBRTwwn88hU6umB8tUqoNz7AyUltAOGyQMWqAAcVgxV+mAp/Y018j69poEHgrW4qKol65/NRZyV7/J0CQQD4rCDjmxGEuA1yMzL2i8NyNl/5vvLVfLcEnVqpHbc1+KfUHZuY7iv38xpzfmErqhCxAXfQ52edq5rXmMIVSbFrAkEAvSvfSSK9XQDJl3NEyfR3BGbsoqKIYOuJAnv4OQPSODZfTNWhc11S8y914qaSWB+Iid9HoLvAIgPH5mrzPzjSowJBAJcw4FZCI+aTmOlEI8ous8gvMy8/X5lZWFUf7s0/2fKgmjmnPsE+ndEFJ6HsxturbLaR8+05pJAClARdRjN3OL0CQGoF+8gmw1ErztCmVyiFbms2MGxagesoN4r/5jg2Tw0YVENg/HMHHCWWNREJ4L2pNsJnNOL+N4oY6mHXEWwesdcCQCUYTfLYxi+Wg/5BSC7fgl/gu0mlx07AzMoMQLDOXdisV5rpxrOoT3BOLBqyccv37AZ3e2gqb8JYyNzO6C0zswQ=
-----END PRIVATE KEY-----
clientEmail: testClientEmail
clientId: testClientId
authUri: testAuthUri
tokenUri: testTokenUri
authProviderX509CertUrl: testAuthProviderX509CertUrl
clientX509CertUrl: testClientX509CertUrl