@RequiredArgsConstructor

헨도·2024년 6월 26일
0

SpringBoot

목록 보기
2/23
post-thumbnail

@RequiredArgsConstructor 란?

  • final 키워드를 사용한 인스턴스들만 Bean 객체로 등록한다는 것

Q. 그럼 final 키워드를 사용하지 않으면..?

  • NullPointerException 발생한다.

Q. 그럼 왜 사용할까?

  • 우린 의존성 주입(DI) 을 사용해서 Bean 객체로 등록된 아이들에게 제어의 역전(Inversion of Control) 을 수행한다.

    의존성 주입에는 3가지 방법이 존재한다.

    1. 필드 주입
    2. setter 주입
    3. 생성자 주입

    이 중 스프링 추천은 "생성자 주입"이다.
    그 이유는 "한번 의존성을 주입받은 객체는 프로그램이 끝날 때까지 변하지 않는 특성을 가지므로 불변성(immutable) 을 표시해주는 것이 좋기 때문이다."

    그래서 의존성을 주입할 객체는 final 키워드를 사용하는 것이다.

    근데 매번 @Autowired 어노테이션을 사용하고 생성자를 생성해주고 하기에는 번거로움이 발생한다.

    그래서 탄생된 것이 @RequiredArgsConstructor 이다.

사용법

@RequiredArgsConstructor 를 활용한 생성자 주입

@Service
@RequiredArgsConstructor
public class SimpleServiceImple implements SimpleService{
	private final SimpleRepository simpleRepository;
    private final TestRepository testRepository;
}
  • 이렇게 선언하면 알아서 final 이 붙은 필드에 대해 생성자를 만들어준다.

@RequiredArgsConstructor 를 사용하지 않았을 경우 생성자 주입

@Service
@RequiredArgsConstructor
public class SimpleServiceImple implements SimpleService{
	private SimpleRepository simpleRepository;
    private TestRepository testRepository;
    
    @Autowired
    public SimpleServiceImpl(SimpleRepository simpleRepository, TestRepository testRepository){
    	this.simpleRepository = simpleRepository;
        this.testRepository = testRepository;
    }
}
profile
Junior Backend Developer

0개의 댓글