인프런 커뮤니티 질문&답변

김카프리오님의 프로필 이미지
김카프리오

작성한 질문수

스프링부트 시큐리티 & JWT 강의

스프링부트 시큐리티 9강 - 구글 로그인 및 자동 회원가입 진행 완료

순환 의존관계오류나신 분들 보세욥!

작성

·

1.8K

28

@Component
public class CustomBCryptPasswordEncoder extends BCryptPasswordEncoder {
}

위 처럼 따로 BcryptPasswordEncoder를 만들어주고 컨테이너에

 등록합니다!

    //해당 메서드의 리턴되는 오브젝트를 IoC로 등록해준다.
    /*
    @Bean()
    public BCryptPasswordEncoder encoder(){
        return new BCryptPasswordEncoder();
    }

     */

그리고 위의 코드(SecurityConfig)를 저처럼 주석으로 처리해주세요!

순환 참조가 나는 이유:

1. SpringContainer에서 처음 빈으로 등록하기 위해 객체를 생성 하여 줍니다(싱클톤)

2. 그래서 SecurityConfig 객체를 생성하던 중 

PrincipalOauth2UserService객체를 의존하고있네요?
그래서 PrincipalOauth2UserService를 만들어 주는데..


3. 어라? PrincipalOauth2UserService에서도 SecurityConfig에서
빈으로 등록한 BCryptPasswordEncoder를 참조하고있네??


4. 오잉? 스프링:참조가 순환되넹?아아아아아악! => 오류

즉,

SecurityConfig -> PrincipalOauth2UserService,

다시 PrincipalOauth2UserService->SecurityConfig

 

그래서 저는 SecuritiConfig -> PrincipalOauth2UserService->

CustomBCryptPasswordEncoder 로 구조를 변경하였습니다.

답변 5

0

댑악😱 감사합니당!👏🏻👏🏻👏🏻

0

앗 이렇게해보려고했는데 이미답변이있었네요! 감사합니다!

0

감사합니다

0

감사합니다.

0

최주호님의 프로필 이미지
최주호
지식공유자

감사합니다 ㅎ

김카프리오님의 프로필 이미지
김카프리오

작성한 질문수

질문하기