본문 바로가기
Spring

@Resource Annotation 이란?

by invelog 2023. 8. 24.
반응형

@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 어노테이션 적용 순서

  1. name 속성에 지정한 Bean 객체를 찾음
  2. name 속성이 없을 경우, 동일한 타입을 갖는 Bean 객체를 찾음
  3. name 속성이 없고 동일한 타입을 갖는 Bean 객체가 두 개 이상일 경우에는 같은 이름을 가진 Bean 객체를 찾음
  4. name 속성이 없고 동일한 타입을 갖는 Bean 객체가 두 개 이상이고 같은 이름을 가진 Bean 객체가 없을 경우 @Qualifier를 이용하여 주입할 빈 객체를 찾음

 


 

참고 글

https://iwannafullstack.tistory.com/entry/Resource-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-%EC%9D%B4%EB%9E%80

반응형

'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