본문 바로가기
스프링

@Autowired

by 리포터12 2023. 3. 29.
728x90

필드에 @Autowired 를 붙이면

타입이 일치하는 빈 객체를 자동으로 주입 해준다.

이 때, 조회되는 빈이 복수개 존재하면, 빈 이름으로 재차 조회한다.

 

 

public class Example {

	@Autowired
	private ExamRepository repository;

}

다만, 이렇게 의존주입을 할 경우,

폭 넓은 테스트가 불가해지며,이를 해결하기 위해선  setter 등의 추가적인 수정 메서드가 필요 해진다.

 

왜일까?

 

순서를 다시 짚어보자.

1. 서버 실행 

2. 컴포넌트 스캔(기본적으로 스캔은 프로젝트 패키지 최상단) 

3. 검색된 빈 객체 컨테이너에 등록

 

빈 객체가 생성되고, 해당 클래스의 필드에 의존 주입 된다.

???

의존 주입엔 성공했지만, 추후 수정/변경이 안 된다.

그러니 필드를 수정하기 위한 메서드가 별도로 필요 해질 수 밖에 없다.

 

...

의존 주입 방법 4가지 (생성자 주입, 수정자 주입, 필드 주입, 메서드 주입) 에서 

필드 주입 좀 해보려니까, 범용성이 적고, 결국 수정자 주입(setter)로 돌아오네? 

 

거기다 DI 프레임 워크 없음 아예 코드가 안 돌아가네..?

 

굳이 쓸 필요가 없겠다.

 

쓰려면 테스트 코드, 빈 설정 클래스 정도에서나 써보자. ( 빈 설정 클래스 자체가 스프링에서만 쓰이니까)

728x90

댓글