티스토리 뷰

1. 필드 주입 (Field injection)

  • 필드에 바로 주입
  • 코드가 간결해지지만 외부에서  memberRepository 변경이 불가능하여서 테스트가 어려울 수 있음
  • DI 프레임워크에 의존적

 

2. 수정자 주입 (Setter injection)

  • setter 메서드를 통해 주입
  • 변경이 가능하기 때문에, 선택이나 변경 가능성이 있는 의존 관계일 때 사용
    -> 런타임 시점에도 변경이 가능하다..
    -> 필수 값이 아닌 경우에 수정자 주입 방식을 옵션으로 부여하는 것이 바람직

 

3. 생성자 주입 (Constructor Injection)

  • constructor를 통해 생성자 호출 시점에 단 한 번 주입 (스프링 bean 기준, 생성자가 하나 뿐이면 @Autowired 생략 가능함) 
  • 중간에 변경될 일이 없기 때문에
    -> final 키워드
    -> 불변! 필수! 의존관계에서 사용
  • 프레임워크에 의존하지 않고, 순수한 자바 언어의 특성을 잘 살리는 방법으로 권장됨

 

ref. 롬복 라이브러리 사용 시 생성자 주입

  • final 키워드가 붙은 필드를 모아서 생성자를 자동으로 만들어줌
    -> 스프링 컨테이너가 injection하면서 생성자에서 세팅하고 끝나는 필드들은 final로

 

'Spring' 카테고리의 다른 글

컴포넌트 스캔과 수동 Bean 등록  (0) 2022.04.24
OSIV  (0) 2022.04.24
JPA N+1문제  (0) 2022.04.23
JPA의 병합(merge)과 변경 감지(Dirty Checking) 차이점  (0) 2022.04.21
도메인 모델 패턴 / 트랜잭션 스크립트 패턴  (0) 2022.04.21
공지사항
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31