스프링 부트 OAuth 구현을 하다가 순환참조 이슈가 발생하였다. 이 순환참조 이슈는 Spring Boot 2.6x 버전부터 발생한다고 한다. 앞으로 프로젝트 할 때 흔히 겪을 수 있는 문제라 일단 기록은 해두려 한다.

 

  • 문제에러 화면
    • 대충 circular references 어쩌고 나오면 순환참조 이슈이다. 

문제화면

  • 문제가 발생되는 코드

코드1
코드2

  • SecurityConfig를 빈으로 등록하려 하니 PrincipalOauth2UserService가 빈으로 사전에 등록되어야 주입이 가능하고 PrincipalOauth2UserService를 빈으로 등록하려 하니 BCryptPasswordEncoder가 미리 빈으로 등록되어서 주입을 해야 하는데 이도저도 안되니 결국 어떠한 빈도 생성하지 못한다. 

 

  • 해결책
    • 순환의 고리를 끊자.
      • 다른 Config 클래스에 빈으로 등록하기 
      • BCryptPasswordEncoder를 상속받는 클래스를 만들고 @Component로 빈으로 등록하기 
  • 본인은 두번째 방법으로 해결하였다. 

상속이즈굳

 

+ Recent posts