인프런 커뮤니티 질문&답변
spring security 문제
작성
·
432
0
강의를 따라 pom.xml과 application.yml에 작성했던 spring security 관련 내용들을 주석 해제한 후 SecurityConfig.java에 webSecurityCustomizer()를 추가하고 실행했는데 사이트에 연결할 수 없다고 합니다.
pom.xml

application.yml


사이트에 연결할 수 없음 상태가 지속되다가 어느 순간 console에 올라오는 에러 메시지는 다음과 같습니다.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDetailsService' defined in class path resource [kr/co/joneconsulting/myrestfulservice/config/SecurityConfig.class]: Failed to instantiate [org.springframework.security.core.userdetails.UserDetailsService]: Factory method 'userDetailsService' threw exception with message: null
강의와 동일하게 작성한 것 같은데 원인을 잘 모르겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
문제 상황에 대한 설명을 감사드리며, SecurityConfig.java 의 userDetailsService() 메서드에서 예외가 발생하는 이유에 대해 몇 가지 가능성을 살펴보면 좋겠습니다.
UserDetails객체 생성 시 입력한 값들이 예상치 못한null을 포함하고 있는지 확인해 주세요.username,password,authorities에 정상적인 값을 제공했는지 다시 확인이 필요합니다.BCryptPasswordEncoder를 사용할 때passwordEncoder빈이 정상적으로 생성되었는지, 및 제대로 참조되고 있는지 확인합니다.생성된
UserDetailsService빈과 관련된 다른 설정이 충돌하고 있지 않은지 살펴볼 필요가 있습니다. 예를 들어SecurityConfig외의 다른 곳에서UserDetailsService타입의 빈이 만들어져서 충돌을 일으킬 수도 있습니다.코드의 다른 부분에서
UserDetailsService에 의존하는 다른 빈들이 먼저 로드되어서 생기는 순환 참조 문제가 있는지 검토해 볼 수도 있습니다.InMemoryUserDetailsManager를 사용하는 방식에 문제가 없는지, 혹시 놓친 부분이 없는지 전체적인 코드 흐름을 따라 가며 점검해 보세요.
예외 메시지에서 ‘null’이 제시된다면 특정 빈을 생성하거나 참조할 때 필요한 값이나 참조가 잘못되었을 가능성이 높습니다. 디버거를 사용하여 userDetailsService 메서드 실행 시 어느 부분에서 예외가 발생하는지 상세하게 확인하시는 것도 좋은 방법입니다.
마지막으로, 에러 메시지만으로는 한정된 정보만 제공되므로, 보다 정확한 원인 파악을 위하여 전체 SecurityConfig 클래스의 코드를 점검하는 것이 필요합니다. 그리고 스프링 부트 관련 문서를 참고하면서 추가적인 해결 방안을 모색해보세요.
Spring Security 참고 문서:
- Spring Boot Reference Documentation on Spring Security
- Spring Security Reference Guide
상세한 로그 메시지나 코드를 제공해 주시면 더 정확한 도움을 드릴 수 있습니다. 문제 해결을 위한 추가 질문이 있으시면 언제든지 연락 주세요.






제가 작성한 userDetailsService()에 문제가 있었습니다.
return을 userDetailsService로 하지 않고 new userDetailsService()로 해서 생긴 문제였던 것 같습니다.
답변 감사합니다.