문제
스프링에서 Service를 만들었는데 인스턴스가 null로 들어오고 있어 문제가 발생했다.
@RequiredArgsConstructor를 사용해 인스턴스를 가져오려고했는데 못가져 오는 원인을 확인
해결
@RequiredArgsConstructor를 사용할때는 final 키워드를 사용한 인스턴스들만 Bean 객체로 등록한다
왜?
DI를 사용해 Bean 객체로 등록된 아이들에게 IoC를 수행
나는 생성자 주입을 통해 사용했다.
단순히 생성자 주입을 사용하는게 좋고 이게 추세다 해서 사용했는데 원리를 이해하지 못한 채 사용해 발생한 문제였다.
한번 의존성을 주입받은 객체는 프로그램이 끝날때까지 변하지 않는 특징을 가져 불변성을 표시해주는것이 좋기때문
그래서 의존성 주입할 객체는 final 키워드를 사용
++ 추가로 @RequiredArgsConstructor 어노테이션은 필드주입생성자를 대처해주고 현재 생성자가 하나밖에 없는 상태이니 @Autowired 어노테이션을 생략해도 알아서 의존성이 주입된다. 이게 모든것을 생략하고 위 어노테이션 하나로 모든게 이루어지는 과정
'오류' 카테고리의 다른 글
GCP SSH VSCode로 연결하면서 생긴 문제 목록 해결 (0) | 2024.05.06 |
---|---|
스프링 graphql DTO에 값이 제대로 들어오지 않을 때 해결법 (0) | 2024.02.25 |
스프링 error: cannot find symbol 문제 해결 (0) | 2024.02.19 |
ec2 연결이 안되는 문제 해결 기록 (0) | 2024.02.15 |
ec2인스턴스에서 s3 연결하면서 적은 메모(문제투성이) (0) | 2024.02.12 |