
에러 메시지 : java: variable customerService not initialized in the default constructor
[ 상황 ]
아래 코드에서 에러 발생
@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
@Slf4j
public class CustomerController {
private final CustomerService customerService;
//...생략
}
에러 메시지가 의미하는 바는 final 필드인 customerService 가 초기화되지 않았다는 것을 의미한다 .
final 키워드는 무조건 한번 초기화되어야하기 때문인데 이는 생성자에서 값을 꼭 넣어줘야하고 한번 초기화되면 바꿀 수 없다는 것을 의미한다.
하지만 `@RequiredArgsConstructor` 을 사용했음에도 해당 에러가 발생하는 것은 롬복(Lombok)이 제대로 동작하지 않아서 발생할 수 있다고 한다.
[ 참고 ]
#1
final 키워드
2025.06.05 - [Backend/Java] - final
final
# 개념 private final JwtUtil jwtUtil;public MyService(JwtUtil jwtUtil) { this.jwtUtil = jwtUtil;} - 단 한 번만 할당 가능- 생성자에서 반드시 초기화해야 함- setter가 없어도 되고, 불변 객체로 설계 가능 한 번 정해진
megak.tistory.com
# 2
@RequiredArgsConstructor 이란?
2025.06.05 - [Backend/Spring & Spring Boot] - @RequiredArgsConstructor 의 역할 ( 생성자 주입 vs 필드 주입 )
@RequiredArgsConstructor 의 역할 ( 생성자 주입 vs 필드 주입 )
@RequiredArgsConstructor 개념- final 필드나 @Nonnull 애노테이션이 붙은 필드만을 파라미터로 받는 생성자를 자동으로 생성해줌(기본생성자 생성 X) - Lombok 라이브러리에서 제공하는 애노테이션 중 Java
megak.tistory.com
[ 해결 ]
해결하기 위한 몇가지 방법과 결과
1) 롬복 설치
File > Settings > Plugins > lombok 설치
-> 해결 X : 이미 설치되어있음
2) File > invalid > cache > restart
-> 해결 X
3) File > Build,Execution, Deployment > Annotaion Processors

"Enable annotaion processing" 에 체크 !
-> 해결 O
+ ) 적용 후에도 안된다면 Build > Rebild Project
'Backend > Spring & Spring Boot' 카테고리의 다른 글
| Spring Boot CORS 설정 관련 에러 처리 (2) | 2025.08.27 |
|---|---|
| FeignClient - Spring Cloud 에서 제공하는 HTTP 클라이언트 (2) | 2025.07.10 |
| @RequiredArgsConstructor 의 역할 ( 생성자 주입 vs 필드 주입 ) (1) | 2025.06.05 |
| Spring Security - SimpleGrantedAuthority, UserDetails, UserDetailsService (0) | 2025.05.29 |
| Spring Security 의 초기 username 설정 위치 (0) | 2025.04.29 |