[스프링 입문] AOP 순환참조 발생과 해결

요닝·2024년 6월 11일
0

김영한님의 스프링 입문 강의을 들으면서 발생한 에러에 대한 저의 정리내용입니다.φ(・ω・` )

스프링 입문 강의중 AOP에 관한 강의를 들으면서,
TimeTraceAop를 SpringConfig에서 @Bean으로 직접 등록하려고 보니, 해당 화면과 같은 로그가 나왔습니다.

이게 무슨 에러 로그일까? 구글링을 해본 결과, 해당 로그를 찾아보니 순환 참조 오류라는 것이었습니다.

해당사진들은 참고용으로 올려두었습니다
.
springConfig속의 Bean

error log

💡순환 참조란?

  • 해당 그림과 같이 두 개 이상의 bean이 서로를 의존하는 상황을 순환 참조라고 합니다.
  • 만약에 Spring이 'A'라는 bean을 생성하려고 할때 'B' 빈이 필요하고 'B'빈을 생성하려고 할 때도 'A' 빈이 필요합니다.

이 과정이 반복되다보면 무한루프가 발생해서 문제가 생긴다는 것입니다.


강의를 들으면서 생겼던 문제가 생겼던 코드는 @Around에 !target을 추가해주기 전이었습니다. (하단 사진은 해결 방안입니다)

✅해결방안

'SpringConfig'에서 'TimeTraceAop'를 @Bean으로 직접 등록 할 때 'TimeTraceAop'가 자기를 포함한 모든 빈에 AOP를 적용시키려해서 순환 참조 문제가 발생한 것입니다!!!

해결 방안으로 !target에 자기 자신을 추가해서 AOP대상에서 제외해주므로 해결할 수 있습니다

해결방법

profile
백엔드 개발자 (ง •̀ω•́)ง✧

0개의 댓글