[Spring] @inject 와


오늘 Chet Sense에게 물어봤습니다.

그의 대답

1. @Autowired는 Spring 전용 주석이고 @Inject는 Java 종속성 주입(JSR-330) 사양의 일부입니다.


2. @Autowired는 Spring 관리 Bean을 클래스에 주입하는 데 사용되는 반면 @Inject는 JSR-330 사양을 구현하는 모든 종속성 주입 프레임워크와 함께 사용할 수 있습니다.


3. @Autowired는 생성자 주입, 필드 주입 및 메서드 주입을 지원하는 반면 @Inject는 생성자와 필드 주입만 지원합니다.


4 @Autowired는 Spring 애플리케이션에서 더 일반적으로 사용되는 반면 @Inject는 Java EE 애플리케이션에서 더 일반적으로 사용됩니다.

Autowired는 Spring의 일부이고 Inject는 Java 종속성 주입(JSR-330)의 일부입니다.

가져올 때 라이브러리 팩 이름이 표시되지 않는 이유는 무엇입니까? 이제 알겠어…

하지만 문서를 보면

Chatsenses 3번과 달리 @inject는 메서드 주입도 지원합니다.

그래서 내가 당신이 틀렸다고 말했을 때…

네 말이 맞아. 이전 답변으로 인해 혼란을 드린 점 사과드립니다.

Spring 5 이상 버전에서는 @Inject 어노테이션을 메서드 주입, 생성자 및 필드 주입에 사용할 수 있습니다.

이는 Spring 5가 메서드 주입에 대한 @Inject 지원을 포함하는 JSR-330 사양을 지원하기 때문입니다.

이는 JSR-330이 Spring 5부터 지원되었기 때문입니다.

그는 이미 알고 있었다

참조 공식 문서

  1. “@Autowired” 문서: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-autowired-annotation
  2. “@Inject” 문서: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-standard-annotations-inject