울음참고 개발공부
article thumbnail
728x90

 

 

 

 

 

에러 메시지 : 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

 

 

 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!