Spring Framework의 @Inject와 @Autowired의 차이점은 무엇입니까?어떤 조건으로 사용하면 좋을까요?
를 몇 개 , 그는 SpringSource를 .@Inject
내 에 그는 내 and and and and and and and and and and and and 、 and 、 and 、 and 、 and 、 and 、@Autowired
.
다음은 코드입니다.
@Inject private CustomerOrderService customerOrderService;
가 있는지 잘 요.@Inject
★★★★★★★★★★★★★★★★★」@Autowired
그리고 어떤 상황에서 어떤 것을 사용해야 하는지 누가 설명을 해주시면 감사하겠습니다.
여기서 당신이 주석을 언급하고 있다고 가정하면요. @Inject
는 Java EE 6(JSR-299)에서 도입된 Java CDI(Contexts and Dependency Injection) 표준의 일부입니다.자세한 내용은 여기를 참조하십시오.Spring은 다음을 지원하도록 선택했습니다.@Inject
자신의 주석과 주석@Autowired
석입니니다다
이 질문에, 이 질문에 답하기 위해서,@Autowired
봄의 주석입니다. @Inject
는 CDI라고 불리는 Java 테크놀로지의 일부로 Spring과 유사한 의존성 주입 표준을 정의합니다.스프링 애플리케이션에서는 스프링이 자체 주석 외에 일부 JSR-299 주석을 지원하기로 결정한 것과 동일한 방식으로 두 개의 주석이 작동합니다.
여기 이 블로그 게시물이 있습니다.@Resource
,@Inject
, , , , 입니다.@Autowired
상당히 포괄적인 작업을 수행하는 것 같습니다.
링크에서:
테스트 2와 7을 제외하고 구성과 결과는 동일했습니다.후드 아래를 살펴보니 '@Autowired' 주석과 '@Inject' 주석이 동일하게 동작한다는 것을 알 수 있었습니다.두 주석 모두 'AutowiredAnnotationBeanPostProcessor'를 사용하여 종속성을 주입합니다.'@Autowired'와 '@Inject'는 스프링 콩 주입 시 서로 호환됩니다.그러나 '@Resource' 주석에서는 'CommonAnnotationBeanPostProcessor'를 사용하여 종속성을 주입합니다.다른 포스트 프로세서클래스를 사용해도, 모두 거의 같은 동작을 합니다.다음은 실행 경로의 요약입니다.
필자가 참조하는 테스트 2와 7은 각각 '필드명에 의한 주입'과 '부정한 한정자를 사용하여 콩을 해결하려는 시도'입니다.
결론은 필요한 모든 정보를 제공합니다.
을 사용할 수 .@Autowired
required
를 「」로 합니다.false
.
, ,을 할 때는 용용 but but but but but but but@Inject
프로바이더 인터페이스는 bean과 함께 동작합니다.즉, bean은 직접 주입되지 않고 Provider와 함께 주입됩니다.
Spring Documents를 읽을 때 유의해야 할 주요 차이점@Autowired
★★★★★★★★★★★★★★★★★」@Inject
, ★★★★★★★★★★★★★★★★★.@Autowired
@Inject' Atribute'required' Atribute '@Inject' Atribute 'required' Atribute 'required'입니다.
3.0 주입 Spring 3.0)을 .@Inject
,@Named
,@Singleton
를 참조해 주세요.
스프링 문서에는 스프링 관련 항목과의 비교를 포함한 별도의 섹션이 있습니다.
항상 @Inject를 사용하는 것이 좋습니다.이는 Java 구성 방식(Sun 제공)이기 때문에 애플리케이션이 프레임워크에 의존하지 않습니다.그래서 네가 봄을 맞으면 수업도 잘 될 거야.
@Autowired를 사용하면 @Autowired는 스프링 제공 주석이기 때문에 스프링에서만 작동합니다.
@Autowired
주석은 스프링 프레임워크에 정의되어 있습니다.
@Inject
주석은 표준 "Dependency Injection for Java"(JSR-330)에 정의된 표준 주석입니다.Spring(버전 3.0 이후)은 표준 JSR-330에 정의된 일반 종속성 주입 모델을 지원합니다(Google Guice 프레임워크 및 Picocontainer 프레임워크도 이 모델을 지원합니다).
★★★★★★★★★★★★★★★★ @Inject
구현에 대한 참조를 주입할 수 있습니다.Provider
인터페이스: 지연된 참조를 삽입할 수 있습니다.
»@Inject
★★★★★★★★★★★★★★★★★」@Autowired
- 유추하다.가가 가 as@Autowired
석,,@Inject
주석은 자동 바인딩 속성, 메서드 및 생성자에 사용할 수 있습니다.
in in in와는 @Autowired
석,,@Inject
에는 「」이 .required
.따라서 종속성이 발견되지 않으면 예외가 발생합니다.
바인딩 속성의 명확화에도 차이가 있다.@Named
한정자를 추가해야 합니다.@Autowired
이 붙습니다.@Qualifier
인 「」(JSR-330)를 합니다).@Qualifier
및 이을 통한 주석@Named
정의되어 있습니다).
상기와 더불어:
- 의 .
@Autowired
JSR 330을 사용하는 반면 콩은 싱글톤입니다.@Inject
주석은 스프링의 원형과 같다. - 330 @Lazy 를 사용하는 JSR 에는 @와 .
@Inject
. - JSR 330 @Value 를 사용하는 에는 @와 동등한 .
@Inject
.
@Inject
에는 '
@Inject
JSR-330은 JSR-330입니다.여기에는 유형별 일치, 한정자별 일치, 이름별 일치 실행 경로가 있습니다.이러한 실행 경로는 세터와 필드 주입 모두에 유효합니다.의 @Autowired
은 '주석'과요.@Inject
다름이 없다.@Autowired
주석은 스프링 프레임워크의 일부입니다. @Autowired
주석에는 위의 실행 경로도 있습니다. 할 만한 것은 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」@Autowired
변변부부 부다다다다다
@Autowired(required=false) 기본적으로 @Autowired에 대한 종속성 주입을 수행해야 합니다. 이는 필수 특성 값이 기본적으로 true이기 때문입니다.이 동작은 @Autowired(required=false)를 사용하여 변경할 수 있습니다.이 경우 종속성 주입에 대해 bean을 찾을 수 없는 경우 오류가 발생하지 않습니다.
https://www.concretepage.com/spring/spring-autowired-annotation#required-false 를 참조해 주세요.
그러나 @Inject는 필요하지 않습니다(required=false). 종속성을 찾을 수 없는 경우 오류가 발생하지 않습니다.
언급URL : https://stackoverflow.com/questions/7142622/what-is-the-difference-between-inject-and-autowired-in-spring-framework-which
'programing' 카테고리의 다른 글
DDD 모델의 도메인 대 Vuex 작업 (0) | 2022.07.10 |
---|---|
부모 및 손자녀 간의 동기화 수식자 Vue 2 사용 (0) | 2022.07.10 |
VNode를 Vue 템플릿으로 렌더링할 수 있습니까? (0) | 2022.07.10 |
TypeError: 정의되지 않은 Vuej의 속성 '$auth'를 읽을 수 없습니다. (0) | 2022.07.10 |
Vuex에서 한 번의 작업으로 두 가지 상태 관리 (0) | 2022.07.10 |