티스토리 뷰
@Autowired란?
-스프링에서 자동으로 의존성을 주입하기 위해사용되는 어노테이션입니다. 생성자, 필드, 메서드 주입 3가지 방법으로 주입을 할 수 있습니다.
- 생성자 주입
@Component
public class MyComponent {
private MyDependency myDependency;
@Autowired
public MyComponent(MyDependency myDependency) {
this.myDependency = myDependency;
}
// ...
}
- 메서드 주입
@Component
public class MyComponent {
private MyDependency myDependency;
@Autowired
public void setMyDependency(MyDependency myDependency) {
this.myDependency = myDependency;
}
// ...
}
- 필드 주입
@Component
public class MyComponent {
@Autowired
private MyDependency myDependency;
// ...
}
@Autowired의 동작 과정
- @Autowired
-애노테이션을 사용하여 해당 코드에 자동주입을 해야된다는 표시를 합니다. 해당 애노테이션을 보고 빈 자동주입을 시작합니다. 이때 자동주입을 받아와야하는 타입과 이름을 확인합니다. - 빈 검색
-스프링 컨테이너로 가서 해당 빈 이름이 있는지 확인합니다. - 타입 확인
-일치하는 빈 이름이 있다면 같은 타입이 있는지 확인합니다. 만약 없다면 여기서 바로 빈 자동 주입을 실행하고, 같은 타입이 있다면 @Qualifier로 넘어갑니다. - @Qualifier
-타입이 같은 빈이 여러개가 있다면 어느걸 주입해야할지 @Qualifier를 확인하여 일치하는 빈을 자동주입합니다.
@Autowired 옵션
required
-의존성 주입시 해당 빈이 반드시 필요한지 여부를 지정하는 옵션입니다. 기본적으로 true로 설정되어 있으며,
true일 시에는 해당 타입의 빈을 찾지 못하면 예외가 발생하고,
false일때는 빈을 찾지 못하면 예외를 발생시키지않고 주입을 생략합니다.
@Autowired(required = true)
@Autowired(required = false)
primary
-의존성 주입시 빈에 중복이 있을시 만약 하나의 빈에 @Primary 표시가 되어있다면 해당 빈을 우선적으로 가지고 옵니다.
'자바 > 스프링' 카테고리의 다른 글
스프링 컨트롤러 Mapping (0) | 2023.06.29 |
---|---|
빈 라이프사이클 및 스코프 (0) | 2023.06.27 |
빈(Bean) 등록 심화 (0) | 2023.06.26 |
컴포넌트 스캔 (0) | 2023.06.26 |
WAS(Web Application Server) , DispatcherServlet (0) | 2023.06.24 |