-
@Resource 어노테이션 이란?BackEnd/Spring 2021. 11. 19. 16:32반응형
@Resource과 @Autowired의 차이점을 설명하면 Resource 어노테이션의 의미를 이해하기 쉽다.
@Autowired와 @Resource의 차이점
1. @Autowired : 타입(클래스)로 Bean을 지정한다.(생성자/필드/메서드에 모두 적용 가능)
2. @Resource : Name으로 Bean을 지정한다.(필드/메서드에만 적용 가능)
@Autowired 어노테이션이 타입을 이용해서 의존성을 주입한다면, @Resource 어노테이션은 빈 이름을 이용해서 의존성을 주입한다.
예시 코드
@Repository public class CommonDao { @Autowired private SqlSessionTemplate sqlSession; }
위와 같이 Autowired를 사용한다면, sqlSession은 SqlSessionTemplate 클래스에 의존성을 가지게 된다.
@Repository public class TestDao { @Resource(name="BlueSqlSessionTemplate") private SqlSessionTemplate sqlSession; }
위와 같이 Resource를 사용한다면, sqlSession은 BlueSqlSessionTemplate의 이름을 가진 Bean 객체에 의존성을 가지게 된다.
name 속성을 생략하면, @Resource 어노테이션이 적용된 필드나 설정 메서드의 타입을 사용한다.
@Resource 어노테이션의 적용 순서
1. name 속성에 지정한 빈 객체를 찾는다.
2. name 속성이 없을 경우, 동일한 타입을 갖는 빈 객체를 찾는다.
3. name 속성이 없고 동일한 타입을 갖는 빈 객체가 두 개 이상일 경우, 같은 이름을 가진 빈 객체를 찾는다.
4. name 속성이 없고 동일한 타입을 갖는 빈 객체가 두 개 이상이고 같은 이름을 가진 빈 객체가 없는 경우 @Qualifier를 이용해서 주입할 빈 객체를 찾는다.
반응형'BackEnd > Spring' 카테고리의 다른 글
@RequiredArgsConstructor과 @Autowired 차이점 (0) 2021.11.18 @SuppressWarnings 어노테이션 이란? (0) 2021.11.18