개발합니다
[Spring] 의존 객체 자동 주입 (@Autowired, @Resource, @Qualifier, @Inject) 본문
의존객체 자동 주입
: <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;
.
.
.
'Web > Spring' 카테고리의 다른 글
[Spring] @RequestMapping , 요청 파라미터 (0) | 2022.03.25 |
---|---|
[Spring] 어노테이션을 통한 스프링 설정 (Annotation Config) (0) | 2022.03.24 |
[Spring] DI(Dependency Injection) - 의존 객체 주입 (0) | 2022.03.24 |
[Spring] Maven 스프링 프로젝트 구조 (0) | 2022.03.24 |
[Spring] Controller, Service, DAO (0) | 2022.03.22 |