diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeEventService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeEventService.kt index add2181..c2b9e04 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeEventService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeEventService.kt @@ -15,6 +15,7 @@ import kr.co.vividnext.sodalive.member.auth.AuthRepository import org.springframework.context.ApplicationEventPublisher import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Propagation import org.springframework.transaction.annotation.Transactional import kotlin.math.ceil import kotlin.math.round @@ -28,7 +29,7 @@ class ChargeEventService( private val chargeEventRepository: ChargeEventRepository, private val applicationEventPublisher: ApplicationEventPublisher ) { - @Transactional + @Transactional(propagation = Propagation.REQUIRES_NEW) fun applyChargeEvent(chargeId: Long, memberId: Long) { val charge = chargeRepository.findByIdOrNull(chargeId) ?: throw SodaException("이벤트가 적용되지 않았습니다.\n고객센터에 문의해 주세요.") diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeSpringEvent.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeSpringEvent.kt index d12036f..b0a6d88 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeSpringEvent.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/event/ChargeSpringEvent.kt @@ -1,11 +1,9 @@ package kr.co.vividnext.sodalive.can.charge.event import kr.co.vividnext.sodalive.member.Member -import org.springframework.context.event.EventListener import org.springframework.scheduling.annotation.Async import org.springframework.stereotype.Component -import org.springframework.transaction.annotation.Propagation -import org.springframework.transaction.annotation.Transactional +import org.springframework.transaction.event.TransactionalEventListener class ChargeSpringEvent( val chargeId: Long, @@ -17,8 +15,7 @@ class ChargeSpringEventListener( private val chargeEventService: ChargeEventService ) { @Async - @EventListener - @Transactional(propagation = Propagation.REQUIRES_NEW) + @TransactionalEventListener fun applyChargeEvent(event: ChargeSpringEvent) { chargeEventService.applyChargeEvent(event.chargeId, event.member.id!!) }