우린 의존성 주입(DI) 을 사용해서 Bean 객체로 등록된 아이들에게 제어의 역전(Inversion of Control) 을 수행한다.
의존성 주입에는 3가지 방법이 존재한다.
이 중 스프링 추천은 "생성자 주입"이다.
그 이유는 "한번 의존성을 주입받은 객체는 프로그램이 끝날 때까지 변하지 않는 특성을 가지므로 불변성(immutable) 을 표시해주는 것이 좋기 때문이다."
그래서 의존성을 주입할 객체는 final 키워드를 사용하는 것이다.
근데 매번 @Autowired 어노테이션을 사용하고 생성자를 생성해주고 하기에는 번거로움이 발생한다.
그래서 탄생된 것이 @RequiredArgsConstructor 이다.
@Service
@RequiredArgsConstructor
public class SimpleServiceImple implements SimpleService{
private final SimpleRepository simpleRepository;
private final TestRepository testRepository;
}
@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;
}
}