의존성 주입 방법

자라나는 ㅇㅅㅇ개발자·2023년 10월 19일
0

TIL

목록 보기
106/126

https://dev-coco.tistory.com/70

https://mangkyu.tistory.com/125

의존성 주입의 필요성
-. Test가 용이해진다.
-. 코드의 재사용성을 높여준다.
-. 객체 간의 의존성(종속성)을 줄이거나 없앨 수 있다.
-. 객체 간의 결합도를 낮추면서 유연한 코드를 작성할 수 있다.

  1. 생성자 주입
    • 생성자 호출 시 딱 한번만 호출되는 것이 보장
    • 객체가 변하지 않거나 필수적인 상황에 사용
    • 스프링 빈에서 생성자가 1개 뿐이라면 @Autowired는 생략 가능
  2. setter 주입
    • 객체가 선택, 변경 가능성이 있는 의존관계에 사용
    • 메서드를 public으로 열어두어야 하므로 변경의 위험이 있다
  3. 필드 주입
    • 코드가 간결하지만 외부에서 변경이 불가능해 테스트 하기 힘들다
    • DI 프레임워크가 필수적이다
    • 테스트코드에 사용 권장
  4. 일반 메서드 주입
    • 한 번에 여러 필드를 주입 가능
    • 거의 사용하지 않음

생성자 주입 방법을 사용하는 이유
- 변경의 가능성을 배제하고 불변성을 보장
- 필드에 final을 사용하여 오류를 컴파일 시점에서 막아준다
- 테스트코드의 가독성이 높아지며, 유지보수가 용이
- 순환참조 에러를 미리 파악하여 방지할 수 있다

Lombok
Lombok 라이브러리에서 제공되는 @RequiredArgsConstructor를 사용하면 코드로는 보이지 않지만 final이 붙은 필드를 자동 생성자로 만들어준다

0개의 댓글