스프링 부트를 공부하다가 @Autowired 와 private final을 통한 의존성 주입에 관한 차이가 궁금해졌습니다. 의존성 주입을 공부할 때 생성자 주입을 사용하는 것이 여러 이점이 많아 권장한다는 점은 알고 있었지만 실제로 코드를 구현하면서 세세한 차이와 어떤식으로 구현을 해야하는지 공부하기 위해 기록을 하기로 했습니다.
@Autowired -> 필드 주입
private final -> 생성자 주입
@Autowired //필드 주입
public BoardService(BoardRepository boardRepository) {
this.boardRepository = boardRepository;
}
private final BoardRepository boardRepository; //생성자 주입
생성자 주입은 위와 같이 선언해 주고 클래스 위에 @RequiredArgsConstructor 를 선언해 주면 됩니다.
[생성자 관련 애노테이션]
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor