@RequiredArgsConstructor
@Service
public class ArticleController {
private final ArticleService articleService;
...
}
public class ArticleController {
private final ArticleService articleService;
@Autowired
public ArticleController(ArticleService articleService) {
this.ArticleRepository = ArticleRepository;
}
보통 DI(의존성 주입)을 방식에는 필드 주입(Field Injection), 수정자 주입(Setter Injection), 생성자 주입(Constructor Injection)의 3가지의 방법이 있는데 이중에서 가장 권장하는 의존성 주입은 생성자 주입 방식이다.
final 로 DI(의존성 주입)를 할 때 필요한 객체를 선언하여 생성자를 만들어주어야 한다. 하지만 생성자 주입을 위한 코드를 직접 작성하는 부분에서 번거로움이 존재한다.
그래서 많이들 사용하는 Lombok에서 @Getter, @Setter 어노테이션 처럼 @RequiredArgsConstructor
어노테이션은 클래스에 선언된 final 변수들, 필드들을 매개변수로 하는 생성자를 자동으로 생성해준다. 코드도 간결해지고 의존성 주입을 자동으로 처리하여 객체 생성 시 필요한 의존성을 보다 편리하게 주입할 수 있는 장점이 있다.