문제상황:
Spring Boot를 활용하여 서버 개발 중, 사용자 프로파일을 가져오는 코드에서 에러가 발생했습니다. 사용자 프로파일을 관리하는 UserService 클래스를 사용하여 사용자 프로파일 정보를 가져오려고 했으나, NoSuchBeanDefinitionException이 발생했습니다.
에러가 발생한 코드:
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/{id}")
public UserProfile getUserProfile(@PathVariable Long id) {
return userService.getUserProfile(id);
}
}
에러로그 내용:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.UserService' available
해결방법:
에러가 수정된 코드 및 수정된 부분에 대한 주석:
// UserService 클래스에 @Service 애노테이션 추가
@Service
public class UserService {
public UserProfile getUserProfile(Long id) {
// ...
}
}
원인분석:
에러 발생 원인은 UserService 클래스에 @Service 애노테이션을 추가하지 않아, 스프링이 UserService 빈을 생성하지 않았기 때문입니다. 스프링 부트는 @Service, @Controller, @Repository 등의 애노테이션을 사용하여 클래스를 빈으로 등록하고, 빈 간의 의존성을 관리합니다. 따라서, 해당 애노테이션을 추가함으로써 스프링이 UserService 빈을 생성하고, UserController에서 사용할 수 있게 되었습니다.
참고링크:
728x90