Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

개발합니다

[Spring] 의존 객체 자동 주입 (@Autowired, @Resource, @Qualifier, @Inject) 본문

Web/Spring

[Spring] 의존 객체 자동 주입 (@Autowired, @Resource, @Qualifier, @Inject)

돈기법 2022. 3. 24. 15:04

의존객체 자동 주입

: <constructor-arg> 또는 <property> 태그로 의존 대상 객체를 명시하지 않아도 스프링 컨테이너가 자동으로 필요한 의존 대상 객체를 찾아서 필요한 객체에 주입해주는 기능.


@Autowired 와 @Resource 어노테이션을 이용해서 구현할 수 있다.

 

 

1. @Autowired

주입하려고 하는 객체의 타입이 일치하는 객체를 자동으로 주입한다.
@Autowired는 생성자, 프로퍼티, 메소드에 전부 사용할 수 있다.

 

 

2. @Resource

주입하려고 하는 객체의 이름이 일치하는 객체를 자동으로 주입한다.
@Resource는 생성자에는 사용 못하고, 프로퍼티 또는 메소드에 사용 가능

  • 프로퍼티나 메소드에 사용하려면 디폴트 생성자를 꼭 명시 해줘야함.
@Resource
private WordDao wordDao;
	
//디폴트 생성자
public WordRegisterServiceUseResource() {
		
}
	
//@Resource 생성자에 사용 불가능
public WordRegisterServiceUseResource(WordDao wordDao) {
	this.wordDao = wordDao;
}
	
public void register(WordSet wordSet) {
	String wordKey = wordSet.getWordKey();
	if(verify(wordKey)) {
		wordDao.insert(wordSet);
	} else {
		System.out.println("The word has already registered.");
	}
}
	
public boolean verify(String wordKey){
	WordSet wordSet = wordDao.select(wordKey);
	return wordSet == null ? true : false;
}
	
@Resource
public void setWordDao(WordDao wordDao) {
	this.wordDao = wordDao;
}

 

 

3. @Qualifier

동일한 객체가 2개 이상인 경우 @Qualifier를 사용해서 명시를 해줘야 한다.

<bean id="wordDao1" class="com.word.dao.WordDao">
	<qualifier value="usedDao" />
</bean>
@Autowired
@Qualifier("usedDao")
private WordDao wordDao;

.
.
.

 

 

4. @Inject

@Autowired와 비슷하게 의존 객체를 자동으로 주입해준다. 

동일한 객체가 2개 이상인 경우 @Qualifier를 사용하지 않고, @Named으로 사용할 객체의 id를 지정해준다.

@Inject
@Named(value="wordDao1")
private WordDao wordDao;

.
.
.