diff --git a/README.md b/README.md index 6a867cb..cfc95f3 100644 --- a/README.md +++ b/README.md @@ -28,3 +28,7 @@ * `SecureRandomStringGenerator` - генератор случайной строки по словарю * `errors.*` - базовые исключения * `.*Utils` - утилиты для различных типов данных + +## common-spring + +Набор утилит, структур данных для `spring`, без привязки к доп. модулям, таким как `jpa` и `web` diff --git a/build.gradle.kts b/build.gradle.kts index 598cb89..b1473e0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -69,4 +69,3 @@ subprojects { useJUnitPlatform() } } - diff --git a/common-spring/build.gradle.kts b/common-spring/build.gradle.kts new file mode 100644 index 0000000..1e5a705 --- /dev/null +++ b/common-spring/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + id("kotlin") + id("kotlin-spring") + id("maven-publish") +} + +dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + + implementation("org.springframework.boot:spring-boot") +} diff --git a/common-spring/src/main/kotlin/ru/touchin/common/spring/Ordered.kt b/common-spring/src/main/kotlin/ru/touchin/common/spring/Ordered.kt new file mode 100644 index 0000000..d8fc909 --- /dev/null +++ b/common-spring/src/main/kotlin/ru/touchin/common/spring/Ordered.kt @@ -0,0 +1,12 @@ +@file:Suppress("unused", "MemberVisibilityCanBePrivate") +package ru.touchin.common.spring + +object Ordered { + + const val NORMAL = 16384 + const val HIGH = NORMAL / 2 + const val HIGHER = HIGH / 2 + const val LOW = NORMAL * 2 + const val LOWER = LOW * 2 + +} diff --git a/common-spring/src/main/kotlin/ru/touchin/common/spring/annotations/RunOnceOnStartup.kt b/common-spring/src/main/kotlin/ru/touchin/common/spring/annotations/RunOnceOnStartup.kt new file mode 100644 index 0000000..3057ab3 --- /dev/null +++ b/common-spring/src/main/kotlin/ru/touchin/common/spring/annotations/RunOnceOnStartup.kt @@ -0,0 +1,8 @@ +package ru.touchin.common.spring.annotations + +import org.springframework.boot.context.event.ApplicationStartedEvent +import org.springframework.context.event.EventListener + +@Target(allowedTargets = [AnnotationTarget.FUNCTION]) +@EventListener(value = [ApplicationStartedEvent::class]) +annotation class RunOnceOnStartup diff --git a/common-spring/src/main/kotlin/ru/touchin/common/spring/io/IOUtils.kt b/common-spring/src/main/kotlin/ru/touchin/common/spring/io/IOUtils.kt new file mode 100644 index 0000000..dc4016b --- /dev/null +++ b/common-spring/src/main/kotlin/ru/touchin/common/spring/io/IOUtils.kt @@ -0,0 +1,14 @@ +@file:Suppress("unused", "MemberVisibilityCanBePrivate") +package ru.touchin.common.spring.io + +import org.springframework.core.io.ClassPathResource +import java.io.InputStream + +object IOUtils { + + fun getInputStreamOfResourceFile(fileName: String): InputStream = ClassPathResource(fileName).inputStream + + fun getResourceAsString(filename: String): String = getInputStreamOfResourceFile(filename) + .use { String(it.readBytes()) } + +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 56ebf4f..f278f3c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -20,3 +20,4 @@ pluginManagement { } include("common") +include("common-spring")