22.08.18 11:48 작성
·
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