ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @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

    댓글

Designed by Tistory.