더보기
Spring에서 제공하는 의존 자동 주입(Automatic Dependency Injection)은 설정 클래스에서 DI를 위한 코드를 간략화합니다.
의존 자동 주입을 위한 어노테이션은 @Autowired @Resource @Inject가 있습니다.
각 어노테이션은 사용 방법과 Spring에서 의존이 주입되는 방식에서 차이가 있습니다.
자동 주입을 위한 어노테이션: @Autowired
자동 주입을 위해 가장 기본적으로 사용되는 어노테이션입니다.
생성자필드그리고Setter에서 사용 할 수 있습니다.- 데이터
타입을 기준으로 Bean을 찾습니다. - 동일한 타입의 Bean이 여러 개인 경우
참조 변수의 이름과 동일한 Bean을 찾습니다. @Qualifier에서 지정하는 Bean을 찾습니다.
@Autowired(required = false)
public void setXXX()
{
}
더보기
데이터 타입 > 참조 변수의 이름 > @Qualifier
더보기
동일한 Bean에 대한 우선 순위를 처리하기 위해 @Primary를 사용 할 수 있습니다.
자동 주입을 위한 어노테이션: @Resource
자바 9 이상에서 사용 할 수 없어 실제로는 거의 쓰이지 않습니다.
Not Nullable로써 자동 주입으로 인해 반드시 Bean을 찾을 수 있어야 합니다.
필드그리고Setter에서 사용 할 수 있습니다.@Autowired와 달리 생성자에서는 사용 할 수 없습니다.참조 변수의 이름과 동일한 Bean을 찾습니다.데이터 타입을 기준으로 Bean을 찾습니다.@Qualifier에서 지정하는 Bean을 찾습니다.name옵션을 사용하여 Bean을 찾을 수 있습니다.
@Resource(name = "someBeanName")
public void setXXX()
{
}
더보기
참조 변수의 이름 > 데이터 타입 > @Qualifier
자동 주입을 위한 어노테이션: @Inject
@Autowired 만큼 많이 사용되며 서로 대체가 가능합니다. 자바에서 지원하므로 Spring Framework에 종속적이지 않습니다.
Not Nullable로써 자동 주입으로 인해 반드시 Bean을 찾을 수 있어야 합니다.
생성자필드그리고Setter에서 사용 할 수 있습니다.데이터 타입을 기준으로 Bean을 찾습니다.@Qualifier에서 지정하는 Bean을 찾습니다.참조 변수의 이름과 동일한 Bean을 찾습니다.@Named어노테이션을 함께 사용하여 Bean을 찾을 수 있습니다.
@Inject
@Named(value = "someBeanName")
public void setXXX()
{
}
더보기
데이터 타입 > @Qualifier > 참조 변수의 이름
더보기
동일한 Bean에 대한 우선 순위를 처리하기 위해 @Primary를 사용 할 수 있습니다.
정리 및 복습
의존 자동 주입(Automatic Dependency Injection)은 설정 클래스에서 DI를 위한 코드를 간략화합니다.- 의존 자동 주입을 위한 어노테이션은
@Autowired@Resource@Inject가 있습니다.
구분 | @Autowired | @Resource | @Inject |
Not Nullable | Not Nullable | ||
None | |||
Spring Framework 전용 | Spring Framework에 종속적이지 않음 |
'Java > Spring' 카테고리의 다른 글
"NoSuchBeanDefinitionException" Bean과 관련해서 자주 발생하는 오류 (0) | 2023.11.28 |
---|---|
Spring 5 입문: Chapter 05.컴포넌트 스캔 (0) | 2023.11.28 |
Spring 5 입문: Chapter 04. 자동 의존 주입 (0) | 2023.11.27 |
@Configuration 어노테이션 개념과 특징 (0) | 2023.11.23 |
Spring 5 입문: Chapter 03B. 여러 개의 @Configuration 설정 클래스 등록하기 (0) | 2023.11.23 |