본문 바로가기
프레임워크/스프링

@Resource vs @Autowired vs @Inject

by so5663 2022. 10. 27.

@Resource 어노테이션이란?

@Autowired와 같은 역할을 한다고 보면된다.

@Resource 어노테이션은 빈의 이름을 이용해서 주입할 객체를 검색한다.

@Resource 어노테이션을 사용하려면 앞서 @Autowired 어노테이션과 마찬가지로 다음의 두가지만 추가하면된다.

 

  • 자동 주입 대상에 @Resource 어노테이션 사용
  • XML설정에 <context:annotation-config />설정 추가
    • @Resource 어노테이션은 빈의 이름을 사용해서 주입할 빈 객체를 찾기 때문에, @Resource 어노테이션의 값으로 빈 객체의 이름을 지정한다.

 

@Autowired와 @Resource, @Inject의 차이점

1. @Autowired : 타입(클래스)로 Bean을 지정한다.(생성자/필드/메서드에 모두 적용 가능)

2. @Resource : Name으로 Bean을 지정한다.(필드/메서드에만 적용 가능)

@Autowired 어노테이션이 타입을 이용해서 의존성을 주입한다면, @Resource 어노테이션은 빈 이름을 이용해서 의존성을 주입한다.

 

3. @Inject@Autowired와 유사하게 주입하려고 하는 객체의 타입이 일치하는 객체를 자동으로 주입한다.

@Repository
public class CommonDao {
    @Autowired
    private SqlSessionTemplate sqlSession;
    
    @Inject
    private SqlSessionTemplate sqlSession;
    
    @Resource(name="SqlSessionTemplate")
    private SqlSessionTemplate sqlSession;
    
}