다양한 의존 관계 주입
수정자 주입 (Setter)
- 자바빈 프로터티 규약의 setter 메소드에 @Autowired를 사용
- 테스트 코드에서 의존 관계를 한 눈에 파악하기 힘듬
- 옵션이 필요한 경우에만 특별히 사용
- 옵션 (Spring Bean과 관계없이 동작해야 하는 경우에 사용)
- @Autowired(required = false) : 호출 자체가 일어나지 않음
- 파라미터에 @Nullable : 호출은 일어나나, null로 나옴
- Optional 파라미터 : 호출은 일어나나, Optional.empty로 옴
필드 주입
- 필드에 바로 @Autowired 사용
- 간결하다는 큰 장점이 있으나, 변경이 불가능한 단점이 있어 사용하지 않음
- DI 프레임 워크가 없으면 할 수 있는게 없음
일반 메소드 주입
- 메소드를 하나 만들고, 그 안에서 주입을 받음
- 사용 X
생성자 주입
- Best Practice (얘를 사용하자)
- 생성자에 @Autowired를 붙여 의존 관계를 주입
- 오류가 컴파일 시점에 찾을 수 있음
- 필드에 final 키워드를 사용할 수 있음 => 필드의 값을 누락하지 않음
- 객체를 생성할 때, 데이터 누락을 방지할 수 있음
- 대부분의 의존 관계는 불변해야 하는데, 이를 유지할 수 있음
- 프레임워크에 의존하지 않고, 순수한 자바 언어의 특징을 잘 살릴 수 있음
댓글남기기