Spring 프로젝트를 진행하다, 아래와 같은 에러메시지를 만났다.
해결방법에 대해 간략히 정리해본다.
에러 메시지
parameter 1 of constructor in required a bean of type that could not be found
1. bean 등록 확인하기
에러메시지가 말하는 바는 명확하다, constructor의 1번째에 오는 인자에 필요한 bean이 제대로 등록이 안되어 있다는 것이다.
빈 등록을 하는 2가지 방법과 이에 대해 알아보고자 한다면 다음링크를 참고하자.(링크)
아래 코드를 통해, 어떤 것이 문제가 될 수 있는지 알아보자.
@RestController
@RequiredArgsConstructor
public class Test{
private final TestRepository testRepo;
private final TestService testService;
}
만약 위 같은 에러메시지가 왔다면, 1번째에 오는 argument, 즉 TestService가 빈등록이 안되어 있다는 것이다.
spring-boot에서는 bean등록이 매우 간편한데,
아래처럼 @Component 혹은 이를 상속받는 @Service, @Controller annotation을 이용하면 된다.
@Service
public class TestService{
}
이렇게 간단하게 annotation만 달아줘도 자동으로 bean등록이 된다.
따라서 위와 같은 annotation을 달아줬는지 체크하자. (나는 이 경우가 아니었다.)
2. java clean + .gradle 삭제
나의 경우 여러개의 sub-module로 이루어진 프로젝트를 진행중이었는데, 빌드 과정에서 무언가 꼬인 케이스였다.
먼저, 명령어 팔레트(cmd + shift + p)를 열고, java clean을 쳐서 작업 영역 정리를 해주자.
이렇게 하면 build 폴더가 삭제되고 남아 있던 cache부분이 사라지게 된다.
그리고 .gradle 폴더를 삭제해 주자.
이제 다시 ./gradlew build 를 이용해주면 정상적으로 빌드되는 것을 볼 수 있었다.
'java,springboot' 카테고리의 다른 글
Spring - Bean으로 등록하는 2가지 방법(컴포넌트 스캔, 자바 코드) (0) | 2023.04.07 |
---|---|
vscode에서 gradle로 springboot 개발환경 설정 (0) | 2023.03.01 |
Ljava.lang.Object 읽을 수 있게 만들기(List 타입 콘솔 찍기) (0) | 2023.02.17 |
@Value 와 @ConfigurationProperties 이용해 여러 프로퍼티 파일(yml) 설정 (0) | 2023.02.13 |
Maven vs Gradle? (0) | 2023.01.26 |