🔌 @Resource

정의

@Resource이름을 기준으로 Bean을 주입하는 애너테이션이다.

필요한 Bean의 이름이 명확할 때 사용하기 좋으며, 이름이 맞지 않으면 주입에 실패할 수 있다.

🧩 역할

  • Bean 이름을 기준으로 의존성을 주입한다.
  • 필드나 Setter에 사용할 수 있다.
  • @Autowired와 달리 이름 기반 주입 성격이 강하다.

🛠 사용법

Field Injection

import javax.annotation.Resource;

public class UserRegisterService {

    @Resource
    private UserDao userDao;
}

Setter Injection

import javax.annotation.Resource;

public class UserRegisterService {
    private UserDao userDao;

    @Resource
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
}

⚠️ 주의사항

  • Bean 이름과 필드명 또는 Setter 이름이 맞아야 한다.
  • 기본적으로 이름 기준으로 찾기 때문에 이름이 다르면 주입되지 않을 수 있다.
  • 생성자 주입에는 일반적으로 사용하지 않는다.

📌 정리

  • @Resource는 이름 기반 Bean 주입 애너테이션이다.
  • 필드와 Setter에 주로 사용한다.
  • 이름이 명확한 경우에 쓰면 의도가 분명해진다.

연결문서

댓글남기기