echo1241 / echo

0 stars 0 forks source link

[TroubleShooting] Webflux AOP @AfterReturning 사용 이슈 #71

Closed hyun1202 closed 2 months ago

hyun1202 commented 2 months ago

Webflux환경에서 AOP를 사용할 때 데이터베이스에 동일한 값이 두 번 insert되는 이슈가 발생했습니다.

원인

아래와 같이 Aspect 메서드를 작성하고 해당 로직을 실행했을 때 image

함수에서 리턴된 값을 사용하기 위해 다시 subscribe() 함수를 사용했을 때, 위에 보이는 로그와 같이 해당 서비스의 메서드가 두 번 실행이 되는 문제를 확인했습니다.

image

해당 이슈는 이미 구독이 된 Mono 객체를 또 다시 구독이(중복 구독) 되었기 때문에 발생한 것이라고 판단했고

@AfterReturning을 이용하여 해결이 불가능하다고 판단하여, 아래와 같이 @Around로 변경했습니다.

해결

image

변경 후 의도했던 대로 한 번만 구독이 되어 잘 동작하는 것을 확인할 수 있습니다. image