본문 바로가기
IT/spring

스프링 @Resource

by 뉴코딩맨 2023. 6. 15.
스프링 프레임워크에서 @Resource는 의존성 주입을 위해 사용되는 애노테이션입니다. 이 애노테이션은 @Autowired와 유사한 기능을 제공하지만, @Autowired와는 약간의 차이점이 있습니다. @Resource에 대해 자세히 알아보고, 실제 예시를 통해 설명하겠습니다.
 
 

@Resource 애노테이션

@Resource는 스프링 프레임워크에서 의존성 주입을 수행하는 데 사용되는 애노테이션입니다. 이 애노테이션은 자바 표준인 JSR-250의 일부로 정의되어 있으며, @Autowired와 마찬가지로 필드, 메서드, 생성자 등에 적용할 수 있습니다.
 
 

@Resource 사용법

@Resource를 사용하려면 주입할 빈의 이름을 지정해야 합니다. 기본적으로 @Resource는 이름을 기반으로 빈을 찾아 의존성 주입을 수행합니다. 예를 들어, 다음과 같이 @Resource를 사용하여 myBean이라는 이름의 빈을 주입할 수 있습니다.
 
@Resource("myBean")
private MyBean myBean;
 
위의 예시에서 myBean은 스프링 컨텍스트에 등록된 빈의 이름입니다. @Resource를 사용하여 해당 이름의 빈을 주입받을 수 있습니다.

 

 

@Resource 예시

아래는 @Resource를 사용하는 예시입니다.

 

@Component("dog")
public class Dog implements Animal {
	// ...
}

@Component("cat")
public class Cat implements Animal {
	// ...
}

@Component
public class Zoo {
    @Resource("dog")
    private Animal animal;

    // ...
}
 
위의 예시에서 Dog와 Cat은 Animal 인터페이스를 구현하는 두 개의 빈입니다. Zoo 클래스에서 @Resource를 사용하여 dog라는 이름의 빈을 주입하고 있습니다. 이렇게 하면 Zoo 클래스는 Dog 빈을 주입받을 수 있습니다.

 

 

@Resource vs @Autowired

@Resource와 @Autowired는 모두 스프링에서 의존성 주입을 위해 사용되지만, 약간의 차이가 있습니다. @Resource는 자바 표준 애노테이션으로서 빈의 이름을 기반으로 주입을 수행하고, @Autowired는 스프링 프레임워크에 특화된 애노테이션으로서 타입을 기반으로 주입을 수행합니다. 따라서 @Resource는 스프링 외의 다른 컨테이너에서도 사용할 수 있지만, @Autowired는 스프링에 의존적입니다.
 
 

결론

@Resource는 스프링에서 의존성 주입을 위해 사용되는 자바 표준 애노테이션입니다. 이 애노테이션을 사용하면 이름을 기반으로 원하는 빈을 주입받을 수 있습니다. @Resource와 @Autowired는 서로 다른 동작 방식을 가지고 있으므로 상황에 맞게 적절히 사용해야 합니다.
 

댓글