스택큐힙리스트

@Resource vs @Autowired@Resource와 @Autowired의 차이점은 무엇인가요? 본문

카테고리 없음

@Resource vs @Autowired@Resource와 @Autowired의 차이점은 무엇인가요?

스택큐힙리스트 2023. 10. 27. 12:44
반응형

어노테이션 @Resource (jsr250) 또는 @Autowired (Spring 전용) 중 DI에서 어떤 것을 사용해야 하나요?


과거에는 @Resource(name=blah)@Autowired @Qualifier(blah)를 모두 성공적으로 사용해 왔습니다.


jsr 사람들에 의해 인가되었으므로 @Resource 태그를 사용하려는 본능이 있습니다.

이에 대해 강한 의견이 있는 사람이 있을까요?

답변 1

모든 @Autowired (또는 @Inject)와 @Resource는 동등하게 잘 작동합니다. 그러나 개념적 차이 또는 의미의 차이가 있습니다.



  • @Resource이름으로 알려진 리소스를 가져와주세요. 이름은 주석이 달린 세터나 필드의 이름에서 추출되거나 name-매개변수에서 가져옵니다.

  • @Inject 또는 @Autowired적절한 다른 컴포넌트를 유형별로 주입하려고 시도합니다.


이 두 가지는 매우 다른 개념입니다. 불행히도, @Resource의 Spring 구현은 이름으로 찾기가 실패할 때 내장된 대체 기능이 있습니다. 이 경우, 이는 @Autowired-종류의 유형별 해결로 대체됩니다. 이 대체 기능은 편리하지만, 개념적인 차이를 알지 못하고 유형 기반 자동 주입에 @Resource을 사용하는 사람들로 인해 혼란을 야기합니다.

답변 2

@Resource vs @Autowired: 스프링 프레임워크에서 의존성 주입 방식 비교
스프링 프레임워크는 자바 기반의 개발에 필수적인 프레임워크로서, 의존성 주입을 통해 객체 간의 결합도를 낮추고 유연한 애플리케이션을 만들 수 있습니다. 의존성 주입을 구현하는 방법 중에서는 @Resource와 @Autowired 두 가지가 가장 보편적으로 사용됩니다. 이번 글에서는 두 방식의 차이점에 대해 논의하고, 그 중에서도 SEO에 민감한 관점에서 달리 쓰여지지 않은 내용을 다루도록 하겠습니다.
@Resource는 JSR-250의 일부로 정의된 자바 표준 어노테이션입니다. 이 어노테이션은 이름을 기준으로 의존성 주입을 처리합니다. 즉, @Resource 어노테이션을 사용하면 이름을 통해 스프링 컨테이너에서 해당 이름과 일치하는 빈을 찾아 주입하게 됩니다. 이 때 주입되는 빈은 기본적으로 자바의 리플렉션을 통해 지정된 필드에 할당됩니다. 이 방식은 빈의 이름을 name 속성으로 직접 지정할 수 있는 장점이 있습니다.
반면, @Autowired는 스프링 프레임워크의 특징적인 어노테이션 중 하나로, 자동으로 의존성을 주입하는 기능을 제공합니다. @Autowired 어노테이션은 주입될 대상의 타입을 기준으로 스프링 컨테이너에서 해당 타입의 빈을 찾아 주입합니다. 이 때 해당 타입의 빈이 여러 개 존재할 경우, 주입 대상 빈의 이름을 기준으로 선택적으로 주입할 수 있습니다. @Primary 어노테이션을 사용하여 기본적으로 주입될 빈을 설정하는 것도 가능합니다.
@Resource와 @Autowired를 비교하면 @Autowired가 더 많은 기능과 유연성을 제공한다고 할 수 있습니다. @Autowired 어노테이션은 스프링의 특정 어노테이션과 함께 사용될 수도 있으며, 커스텀한 어노테이션도 만들어 사용할 수 있습니다. 또한, @Qualifier 어노테이션을 통해 주입할 빈의 이름을 명확하게 지정할 수 있고, @Autowired(required = false)와 같이 옵션을 설정하여 필수 의존성이 아닌 경우에도 주입할 수 있도록 조정할 수 있습니다.
결론적으로, @Resource와 @Autowired는 모두 스프링 프레임워크에서 의존성 주입을 구현하기 위한 어노테이션으로 각각의 특징과 장단점을 가지고 있습니다. @Resource는 이름을 기준으로 주입되는 장점이 있지만, @Autowired는 타입을 기준으로 자동 주입되는 편의성과 유연성을 제공합니다. 개발자는 프로젝트 요구사항과 상황에 맞게 사용해야 하며, @Autowired가 보다 권장되는 경향이 있습니다.
이로써 @Resource vs @Autowired: 스프링 프레임워크에서 의존성 주입 방식 비교에 대한 내용을 SEO에 민감하게 기술해보았습니다.

반응형
Comments