❓️왜 IDE 는 @Autowired Annotation 을 비추하는가?

Intellij IDE 를 통해 Spring Application 을 개발하신 분들이면 한번쯤은 보셨을텐데요, Intellij 에서 @Autowired Annotation 을 사용하게 되면 'Field injection is not recommended' 라는 타이틀로 경고 내용을 보여줍니다. 왜 이런 경고 문구가 나오는지 그 이유에 대해 설명하고 있는 아티클이 있어 공유드립니다. Spring 에서는 @Autowired Annotation 을 통해 DI(Dependency Injection) 기능을 사용할 수 있도록 지원하는데요, Constructor(생성자), Setter(Method), Field(Annotation) Injection 이란 이름으로 3가지 방식을 지원하고 있습니다. 또한 @Resource Annotation 을 통해서도 DI(Dependency Injection) 기능을 사용할 수 있는데요 @Autowired Annotation 과는 다르게 IDE 에서 @Resource Annotation 을 쓸 경우 'Field injection is not recommended' 경고를 보여주지 않습니다. @Autowired 와 @Resource 의 차이가 뭘까요? 다음과 같은 3가지 차이가 있습니다. ✔️ 종속성 식별: @Autowired 는 유형별로 Bean 을 주입하는 반면에 @Resource 는 이름별로 먼저 주입하고 이름별로 주입되지 못할 경우 유형별로 주입합니다. ✔️ Annotation 적용 대상: @Autowired 는 생성자, 메소드, 매개변수 및 필드에서 사용할 수 있는 반면, @Resource 는 메소드 및 필드에만 적용할 수 있습니다. ✔️ Provider: @Autowired 는 Spring 에서 제공하는 Annotation 이고, @Resource 는 자바 표준인 JSR-250 에서 제공합니다. IDE 에서 경고 문구를 보여주는 이유는 위의 차이점 중 Provider 와 관련된 차이로 경고 문구를 보여주는 건데요, @Autowired 는 Spring 에서 제공하는 Spring IoC 를 사용하면 문제없이 쓸 수 있지만, 다른 IOC 컨테이너를 사용할 경우 지원되지 않을 수 있습니다. 반면 @Resource 는 JSR-250 에서 제공하는 것이기 때문에 다른 IoC 컨테이너에서도 Java 표준과 호환되기 위해 @Resource 어노테이션을 지원하게 됩니다. 추가로 이 아티클의 내용과는 별개로 위에서 언급드렸던 @Autowired Annotation 을 쓰는 3가지 방식(Constructor, Setter, Field) 중 Spring 에서 추천하는 방식은 Constructor 로그 이유는 단일 책임의 원칙, IoC Container 와의 낮은 의존성, 필드의 불변성 및 순환 의존 방지 때문인데요 이와 관련된 내용은 기회가 되면 다른 게시글에서 다뤄보도록 하겠습니다.

Why Do Spring And IDEA Not Recommend @Autowired annotation?

Medium

Why Do Spring And IDEA Not Recommend @Autowired annotation?

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2022년 12월 22일 오전 6:35

 • 

저장 28조회 2,415

댓글 0

    함께 읽은 게시물

    Lottie vs WebP – iOS 앱에서 애니메이션 성능 비교

    i

    ... 더 보기

    Lottie vs WebP Animation

    iOYES

    Lottie vs WebP Animation

    나는 가끔 조합형 한글의 아름다움에 대해 생각한다.


    그 아름다움은 단순히 예쁜 글꼴이나 정갈한 종이 위의 자소 배열에서 끝나지 않는다. 진짜 매력은, 정밀한 정보 구조와 이산 수학적 규칙성 속에 숨어 있다.


    ... 더 보기

    🕊️ 스프링 부트: YAML vs properties

    ... 더 보기

    Spring Boot : Difference between yml vs properties file

    Medium

    Spring Boot : Difference between yml vs properties file

     • 

    댓글 1 • 저장 118 • 조회 9,420


    🙉 달레의 찐팬이 되어주실래요? 💕

    ... 더 보기


    DB 프로시저 싫어하시는 분들 많으시죠? Lambda/Serverless Function 이라고 생각해보십시오! 사실상 Serverless Function이랑 똑같은 것. Serverless Function도 싫어하시면 린정.

    조회 2,236