반응형
@Resource 와 @Autowired 두 어노테이션을 비교해서 살펴 보면 더 쉽게 이해할 수 있다.
- @Autowired : 타입(클래스)으로 Bean을 지정 (생성자/필드/메서드에 모두 적용 가능)
- @Resource : Name으로 Bean을 지정 (필드/메서드에서만 적용 가능)
* Autowired 어노테이션을 타입을 이용하여 의존성을 주입하고 @Resource는 Bean 이름으로 의존성 주입
@Autowired를 사용한 예시
@Repository
public class CommonDao {
@Autowired
private SqlSessionTemplate sqlSession;
}
@Autowired 어노테이션을 사용하면 sqlSession은 SqlSessionTemplate 클래스에 의존성을 갖게 된다.
@Resource를 사용한 예시
@Repository
public class TestDao {
@Resource(name = "BlueSqlSessionTemplate")
private SqlSessionTemplate sqlSession;
}
@Resource 어노테이션을 사용하면 sqlSession은 BlueSqlSessionTemplate의 이름을 가진 Bean 객체에 의존성을 갖게 된다. 이때 name 속성을 생략하면 @Resource 어노테이션이 적용된 필드나 설정 메서드의 타입을 사용한다.
@Resource 어노테이션 적용 순서
- name 속성에 지정한 Bean 객체를 찾음
- name 속성이 없을 경우, 동일한 타입을 갖는 Bean 객체를 찾음
- name 속성이 없고 동일한 타입을 갖는 Bean 객체가 두 개 이상일 경우에는 같은 이름을 가진 Bean 객체를 찾음
- name 속성이 없고 동일한 타입을 갖는 Bean 객체가 두 개 이상이고 같은 이름을 가진 Bean 객체가 없을 경우 @Qualifier를 이용하여 주입할 빈 객체를 찾음
참고 글
반응형
'Spring' 카테고리의 다른 글
| Scheduler 처리 (1) | 2023.10.26 |
|---|---|
| VO에서 Map 변환 메서드 (Apache Util) (2) | 2023.08.31 |
| @ModelAttribute 그리고 @RequestParam (0) | 2023.08.24 |
| @RequestMapping 이란? (0) | 2023.08.24 |
| @Controller와 @RestController (0) | 2023.08.24 |