본문 바로가기
오류 또는 예외 로그들

[spring] UnsatisfiedDependencyException

by 코딩하는 원숭이 2021. 11. 5.

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'kr.co.codingmonkey.security.MemberTests': Unsatisfied dependency expressed through field 'encoder'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.crypto.password.PasswordEncoder' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=BCryptPasswordEncoder)}

 

로그인기능을 구현하기 위해 BCryptPasswordEncoder클래스를 이용하였다. 이 후 인코딩된 패스워드를 가지는 사용자를 추가하기위해 테스트클래스의 테스트 메서드를 돌리는 도중 만난 예외이다. 

 

 예외 발생 이유는 역시나 오타였다. 어노테이션, 각종 xml파일들 모두 확인했으나 오타가 없어 의아해하던 도중

 

//기능 구현을 위한 테스트 클래스
public class MemberTests {
	@Autowired
	@Setter @Qualifier("bcryptPasswordEncoder")
	private PasswordEncoder encoder;
	@Autowired @Setter
	private MemberMapper memberMapper;

@Qulifier("bcryptPasswordEncoder")에서 오타가 난 것이었다.

 

BCryptPasswordEncoder클래스를 이용하기위해 생성한 security-context.xml파일의 빈 태그 id속성의 이름과 일치하지 않았던 것. 빈태그 id속성의 이름과 @Qulifier어노테이션 값의 이름을 맞춰주니까 테스트에 성공하였다.

<bean id="bcryptPasswordEncoder" 
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

댓글