[Spring] @Autowired, private final

Jeon817·2023년 4월 17일

Spring

목록 보기
5/11

스프링 부트를 공부하다가 @Autowired 와 private final을 통한 의존성 주입에 관한 차이가 궁금해졌습니다. 의존성 주입을 공부할 때 생성자 주입을 사용하는 것이 여러 이점이 많아 권장한다는 점은 알고 있었지만 실제로 코드를 구현하면서 세세한 차이와 어떤식으로 구현을 해야하는지 공부하기 위해 기록을 하기로 했습니다.

@Autowired -> 필드 주입
private final -> 생성자 주입

    @Autowired //필드 주입
    public BoardService(BoardRepository boardRepository) {
        this.boardRepository = boardRepository;
   }
  • 필드 주입은 @Autowired 를 선언해주면 됩니다.
	private final BoardRepository boardRepository; //생성자 주입
  • 생성자 주입은 위와 같이 선언해 주고 클래스 위에 @RequiredArgsConstructor 를 선언해 주면 됩니다.



[생성자 관련 애노테이션]

@NoArgsConstructor

  • 기본 생성자를 생성해준다(초기값 세팅이 필요한 final 변수가 있을 경우 컴파일 에러가 발생함으로 주의).
  • @NoArgsConstructor(force = true) 를 사용하면 0,null과 같이 타입에 맞는 기본 값으로 초기화됩니다.

@RequiredArgsConstructor

  • final 변수, Notnull 표시가 된 변수처럼 필수적인 정보를 세팅하는 생성자를 만들어줍니다.

@AllArgsConstructor

  • 전체 변수를 생성하는 생성자를 만들어줍니다.

0개의 댓글