@Service
@RequiredArgsConstructor
@Transactional
public class UserService {
private final UserRepository userRepository;
private final BCryptPasswordEncoder passwordEncoder;
public UserResponse registerUser(UserRequest userRequest) {
if (userRepository.findByUsername(userRequest.getUsername()).isPresent()) {
throw new IllegalArgumentException("이미 사용 중인 아이디입니다.");
}
if (userRepository.findByEmail(userRequest.getEmail()).isPresent()) {
throw new IllegalArgumentException("이미 등록된 이메일입니다.");
}
User user = new User();
user.setUsername(userRequest.getUsername());
.....
/// 이하 생략
이렇게 코드를 작성해서 PasswordEncoder를 사용하면, passwordencoder 부분에 에러가 뜨면서
Could not autowire. No beans of 'BCryptPasswordEncoder' type found. 라는 오류가 나타난다.
이는 BCryptPasswordEncoder를 Spring 빈으로 등록하지 않았기 때문에 자동 주입(AutoWiring)이 실패하는 것이다.
해결방법은 매우 간단하다.

SecurityConfig 안에서 빈으로 주입받으면 된다.
'Spring' 카테고리의 다른 글
DTO 만들 때 항상 고려해야되는 사항 @NoArgsConstructor @AllArgsConstructor (0) | 2025.02.21 |
---|---|
2025년 2월 21일 기준 Cannot resolve method 'parseClaimsJws' in 'JwtParserBuilder' 해결방법 Jwts.parserBuilder() (0) | 2025.02.21 |
로깅설정 DEBUG -> INFO 가 필요한 이유 (0) | 2025.02.12 |
NullPointerException이란 무엇이며, 어떻게 해결할 수 있나? (0) | 2025.02.12 |
@EqualsAndHashCode 사용 시 엔티티 간 무한 루프 발생 가능성에 대한 원인과 해결 (0) | 2025.02.06 |