728x90
필드에 @Autowired 를 붙이면
타입이 일치하는 빈 객체를 자동으로 주입 해준다.
이 때, 조회되는 빈이 복수개 존재하면, 빈 이름으로 재차 조회한다.
public class Example {
@Autowired
private ExamRepository repository;
}
다만, 이렇게 의존주입을 할 경우,
폭 넓은 테스트가 불가해지며,이를 해결하기 위해선 setter 등의 추가적인 수정 메서드가 필요 해진다.
왜일까?
순서를 다시 짚어보자.
1. 서버 실행
2. 컴포넌트 스캔(기본적으로 스캔은 프로젝트 패키지 최상단)
3. 검색된 빈 객체 컨테이너에 등록
빈 객체가 생성되고, 해당 클래스의 필드에 의존 주입 된다.
???
의존 주입엔 성공했지만, 추후 수정/변경이 안 된다.
그러니 필드를 수정하기 위한 메서드가 별도로 필요 해질 수 밖에 없다.
...
의존 주입 방법 4가지 (생성자 주입, 수정자 주입, 필드 주입, 메서드 주입) 에서
필드 주입 좀 해보려니까, 범용성이 적고, 결국 수정자 주입(setter)로 돌아오네?
거기다 DI 프레임 워크 없음 아예 코드가 안 돌아가네..?
굳이 쓸 필요가 없겠다.
쓰려면 테스트 코드, 빈 설정 클래스 정도에서나 써보자. ( 빈 설정 클래스 자체가 스프링에서만 쓰이니까)
728x90
'스프링' 카테고리의 다른 글
| @Qualifier 단점 - 컴파일 단계에서 오류가 안 잡힘. (0) | 2023.03.31 |
|---|---|
| DI는 생성자 주입으로 하자 (1) | 2023.03.30 |
| No ParameterResolver registered for parameter (0) | 2023.01.30 |
| [Spring] ResponseEntity (0) | 2023.01.10 |
| [Spring] 검증 - @Valid, @validated 동작 원리 (0) | 2022.12.29 |
댓글