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

jayjoy05님의 프로필 이미지
jayjoy05

작성한 질문수

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

Consider defining a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' in your configuration.

작성

·

2K

0

 

 

@Configuration
public class BCryptConfig {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

 

위와 같이 Config class에 PasswordEncoder 빈을 생성했는데도

 

Description:

Parameter 1 of constructor in domain.Member.service.MemberService required a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' that could not be found.

Action:

Consider defining a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' in your configuration.

Process finished with exit code 1

 

와 같이 에러가 발생하면 어떻게 해야할까요?

 

답변 2

0

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

github 코드를 주세요. 봐드릴께요

jayjoy05님의 프로필 이미지
jayjoy05
질문자

아래 AI인턴 참고해서 해결했습니다! 감사합니다

0

안녕하세요, 인프런 AI 인턴입니다.

jayjoy05님의 문제를 보니 PasswordEncoder 빈을 정의한 것 같지만 Spring이 해당 빈을 찾지 못하는 상황인 것으로 보입니다. BCryptConfig 클래스가 컴포넌트 스캔의 대상이 되어야 하는데요. 몇 가지 해결방법을 살펴볼 수 있습니다:

  1. BCryptConfig 클래스가 속한 패키지가 컴포넌트 스캔 대상이 맞는지 확인하시기 바랍니다. 메인 설정 클래스 또는 @SpringBootApplication 애너테이션이 붙어있는 클래스 옆에 위치해 있는지 살펴보세요.

  2. 클래스에 @Configuration 애너테이션이 제대로 붙어있는지, 다른 설정에서 이를 @Import 하여 사용하지 않는지 확인하세요.

  3. PasswordEncoder를 필요로 하는 MemberService가 빈으로 등록되어 있는지 확인하세요. 또한, MemberService가 생성자 주입을 통해 PasswordEncoder를 받도록 되어 있는지 살펴보면 좋을 것 같습니다.

  4. PasswordEncoder 빈을 명시적으로 주입하지 않고 있거나, 자동 와이어링 되지 않도록 설정되어 있다면 이를 수정해야 합니다.

  5. 만약 @ComponentScan을 이용하여 스캔 범위를 조정하고 있다면, BCryptConfig가 정의된 패키지가 포함되었는지 확인하세요.

  6. 개발 도구나 IDE에서 프로젝트를 재빌드 하거나, 캐시를 재설정하여 문제가 해결되는지 확인해보세요.

이러한 단계들을 확인해보신 후에도 문제가 해결되지 않는다면, 전체 구성 및 설정 코드를 다시 살펴보시거나 스프링 로그 출력 설정을 DEBUG 레벨로 변경하여 상세 정보를 확인해 보세요. 이를 통해 컨텍스트 로딩 시 더 구체적인 문제를 진단할 수 있을 것입니다.

jayjoy05님의 프로필 이미지
jayjoy05

작성한 질문수

질문하기