From 4b026ec78c2182e4498a6bb336cda3e37a7222bc Mon Sep 17 00:00:00 2001 From: Denis Kazantsev Date: Fri, 8 Apr 2022 18:08:14 +0300 Subject: [PATCH] Moved service, changed componentScan, refactored serverInfoAdvice --- .../server/info/advices/ServerInfoAdvice.kt | 12 ++++++++--- .../server/info/configurations/ServerInfo.kt | 2 +- .../server/info/services/ServerInfoService.kt | 4 ++-- .../info/services/ServerInfoServiceImpl.kt | 20 ------------------ .../version/BuildVersionServiceImpl.kt | 21 +++++++++++++++++++ 5 files changed, 33 insertions(+), 26 deletions(-) delete mode 100644 server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/ServerInfoServiceImpl.kt create mode 100644 server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/version/BuildVersionServiceImpl.kt diff --git a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/advices/ServerInfoAdvice.kt b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/advices/ServerInfoAdvice.kt index 3552dd4..1a6a4fb 100644 --- a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/advices/ServerInfoAdvice.kt +++ b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/advices/ServerInfoAdvice.kt @@ -11,8 +11,8 @@ import ru.touchin.server.info.services.ServerInfoService @RestControllerAdvice class ServerInfoAdvice( - private val serverInfoService: ServerInfoService -): ResponseBodyAdvice { + private val serverInfoService: List +) : ResponseBodyAdvice { override fun supports( returnType: MethodParameter, @@ -29,7 +29,13 @@ class ServerInfoAdvice( request: ServerHttpRequest, response: ServerHttpResponse ): Any? { - serverInfoService.addHeader(response) + for (service in serverInfoService) { + response + .headers + .addAll( + service.getHeaders() + ) + } return body } diff --git a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/configurations/ServerInfo.kt b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/configurations/ServerInfo.kt index 2ec77ba..1b18b97 100644 --- a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/configurations/ServerInfo.kt +++ b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/configurations/ServerInfo.kt @@ -6,6 +6,6 @@ import org.springframework.context.annotation.Configuration @Suppress("SpringFacetCodeInspection") @Configuration -@ComponentScan("ru.touchin.server.info") +@ComponentScan("ru.touchin.server.info.advices") @ConfigurationPropertiesScan("ru.touchin.server.info") class ServerInfo diff --git a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/ServerInfoService.kt b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/ServerInfoService.kt index 26eec0c..91ef640 100644 --- a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/ServerInfoService.kt +++ b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/ServerInfoService.kt @@ -1,9 +1,9 @@ package ru.touchin.server.info.services -import org.springframework.http.server.ServerHttpResponse +import org.springframework.util.MultiValueMap interface ServerInfoService { - fun addHeader(response: ServerHttpResponse): ServerHttpResponse + fun getHeaders(): MultiValueMap } diff --git a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/ServerInfoServiceImpl.kt b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/ServerInfoServiceImpl.kt deleted file mode 100644 index 2d22491..0000000 --- a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/ServerInfoServiceImpl.kt +++ /dev/null @@ -1,20 +0,0 @@ -package ru.touchin.server.info.services - -import org.springframework.http.server.ServerHttpResponse -import org.springframework.stereotype.Service -import ru.touchin.server.info.properties.ServerInfoProperties - -@Service -class ServerInfoServiceImpl( - private val serverInfoProperties: ServerInfoProperties -) : ServerInfoService { - - override fun addHeader(response: ServerHttpResponse): ServerHttpResponse { - response - .headers - .add("X-App-Build-Version", serverInfoProperties.buildVersion) - - return response - } - -} diff --git a/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/version/BuildVersionServiceImpl.kt b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/version/BuildVersionServiceImpl.kt new file mode 100644 index 0000000..4c26b2c --- /dev/null +++ b/server-info-spring-web/src/main/kotlin/ru/touchin/server/info/services/version/BuildVersionServiceImpl.kt @@ -0,0 +1,21 @@ +package ru.touchin.server.info.services.version + +import org.springframework.stereotype.Service +import org.springframework.util.LinkedMultiValueMap +import org.springframework.util.MultiValueMap +import ru.touchin.server.info.properties.ServerInfoProperties +import ru.touchin.server.info.services.ServerInfoService + +@Service +class BuildVersionServiceImpl( + private val serverInfoProperties: ServerInfoProperties +) : ServerInfoService { + + override fun getHeaders(): MultiValueMap { + return LinkedMultiValueMap() + .apply { + this.add("X-App-Build-Version", serverInfoProperties.buildVersion) + } + } + +}