From a15adcbd16d6309e2413626792e6cb79732171b1 Mon Sep 17 00:00:00 2001 From: pricelees Date: Fri, 17 Oct 2025 19:01:14 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EA=B8=B0=EC=A1=B4=20=ED=85=8C?= =?UTF-8?q?=EB=A7=88=20=EB=A1=9C=EC=A7=81=EC=97=90=20=EC=BA=90=EC=8B=9C=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20&=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C?= =?UTF-8?q?=EC=97=90=EB=8A=94=20DB=20=EC=9A=94=EC=B2=AD=20=ED=9A=9F?= =?UTF-8?q?=EC=88=98=EB=A5=BC=20=EA=B8=B0=EB=A1=9D=ED=95=A0=20=EC=BB=A4?= =?UTF-8?q?=EC=8A=A4=ED=85=80=20=EB=A9=94=ED=8A=B8=EB=A6=AD=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roomescape/theme/business/AdminThemeService.kt | 13 +++++-------- .../roomescape/theme/business/ThemeService.kt | 12 ++++++++++-- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/service/src/main/kotlin/com/sangdol/roomescape/theme/business/AdminThemeService.kt b/service/src/main/kotlin/com/sangdol/roomescape/theme/business/AdminThemeService.kt index 43c04df7..7496a2ae 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/theme/business/AdminThemeService.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/theme/business/AdminThemeService.kt @@ -3,22 +3,18 @@ package com.sangdol.roomescape.theme.business import com.sangdol.common.persistence.IDGenerator import com.sangdol.roomescape.admin.business.AdminService import com.sangdol.roomescape.common.types.AuditingInfo -import com.sangdol.roomescape.theme.dto.ThemeDetailResponse -import com.sangdol.roomescape.theme.dto.ThemeSummaryListResponse -import com.sangdol.roomescape.theme.dto.ThemeNameListResponse -import com.sangdol.roomescape.theme.dto.ThemeCreateRequest -import com.sangdol.roomescape.theme.dto.ThemeCreateResponse -import com.sangdol.roomescape.theme.dto.ThemeUpdateRequest +import com.sangdol.roomescape.theme.dto.* import com.sangdol.roomescape.theme.exception.ThemeErrorCode import com.sangdol.roomescape.theme.exception.ThemeException import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeEntity import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeRepository import com.sangdol.roomescape.theme.mapper.toDetailResponse -import com.sangdol.roomescape.theme.mapper.toSummaryListResponse import com.sangdol.roomescape.theme.mapper.toEntity import com.sangdol.roomescape.theme.mapper.toNameListResponse +import com.sangdol.roomescape.theme.mapper.toSummaryListResponse import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging +import org.springframework.cache.annotation.CacheEvict import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -81,7 +77,7 @@ class AdminThemeService( } } - + @CacheEvict(cacheNames = ["theme-details"], key = "#id") @Transactional fun deleteTheme(id: Long) { log.info { "[deleteTheme] 테마 삭제 시작: id=${id}" } @@ -93,6 +89,7 @@ class AdminThemeService( } } + @CacheEvict(cacheNames = ["theme-details"], key = "#id") @Transactional fun updateTheme(id: Long, request: ThemeUpdateRequest) { log.info { "[updateTheme] 테마 수정 시작: id=${id}, request=${request}" } diff --git a/service/src/main/kotlin/com/sangdol/roomescape/theme/business/ThemeService.kt b/service/src/main/kotlin/com/sangdol/roomescape/theme/business/ThemeService.kt index 50e38130..75824632 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/theme/business/ThemeService.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/theme/business/ThemeService.kt @@ -10,6 +10,8 @@ import com.sangdol.roomescape.theme.mapper.toInfoResponse import com.sangdol.roomescape.theme.mapper.toListResponse import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging +import io.micrometer.core.instrument.MeterRegistry +import org.springframework.cache.annotation.Cacheable import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -21,13 +23,19 @@ private val log: KLogger = KotlinLogging.logger {} @Service class ThemeService( - private val themeRepository: ThemeRepository + private val themeRepository: ThemeRepository, + meterRegistry: MeterRegistry ) { + private val themeDetailQueryRequestCount = meterRegistry.counter("theme.detail.query.requested") + + @Cacheable(cacheNames = ["theme-details"], key="#id") @Transactional(readOnly = true) fun findInfoById(id: Long): ThemeInfoResponse { log.info { "[findInfoById] 테마 조회 시작: id=$id" } - val theme = themeRepository.findByIdOrNull(id) ?: run { + val theme = themeRepository.findByIdOrNull(id)?.also { + themeDetailQueryRequestCount.increment() + } ?: run { log.warn { "[updateTheme] 테마 조회 실패: id=$id" } throw ThemeException(ThemeErrorCode.THEME_NOT_FOUND) }