[SPRING] 주입 및 리소스 및 자동 연결 주석
SPRING주입 및 리소스 및 자동 연결 주석
@Inject와 @Resource와 @Autowired 주석의 차이점은 무엇입니까?
언제 우리는 각각을 사용해야합니까?
해결법
-
==============================
1.@Inject와 @Autowire와 @Resource의 차이점은 무엇입니까?
@Inject와 @Autowire와 @Resource의 차이점은 무엇입니까?
@Autowired : @Inject 및 @Resource와 반대로) 스프링 별칭 주석 (annotation) (@Inject 및 @Resource와 반대). 즉, 주석 필드 또는 계약자의 인터페이스에 의해 클래스 유형별로 리소스를 주입합니다. 인터페이스 나 서브 클래스의 구현이 거의없는 경우 모호성을 피하기 위해 @Qualifier 주석을 사용하여 선택 범위를 좁힐 수 있습니다. 폴백 (fallback) 일치의 경우 bean 이름은 기본 규정 자 값으로 간주됩니다. 이 컨벤션을 사용하여 특정 bean을 이름으로 참조 할 수 있지만, @Autowired는 근본적으로 선택적인 의미 적 한정자를 사용한 유형 구동 주입에 관한 것입니다.
@Inject : JSR-330 (Java 용 Dependency Injection) 기반의 주석은 주입 가능한 생성자, 메서드 및 필드를 식별합니다. 이 주석은 Spring의 @Autowired 주석을 대체하는 대체물입니다. 따라서 Spring 관련 @Autowired 주석을 사용하는 대신 @Inject를 사용하도록 선택할 수 있습니다. @Autowired와 @Inject의 차이점 중 하나는 @Inject에 필수 필드가 없다는 것입니다. 따라서 삽입 할 적절한 개체를 찾지 못하는 경우 @Autowired가 required = false를 사용할 수 있고 null 가능 필드를 허용합니다 필요한 경우!). @Inject 어노테이션의 장점은 참조를 직접 삽입하는 것이 아니라 @Inject에게 제공자를 주입하도록 요청할 수 있다는 것입니다. Provider 인터페이스는 빈 참조의 지연 주입 및 빈의 여러 인스턴스 주입을 가능하게합니다. 인터페이스 나 서브 클래스의 구현이 거의없는 경우에는 모호성을 피하기 위해 @Named 주석을 사용하여 선택 범위를 좁힐 수 있습니다. @Named 주석은 Spring의 @Qualifier와 매우 유사하게 작동합니다.
@Resource : JSR-250을 기반으로 한 주석. @Resource는 @Autowired와 @Inject와 아주 비슷하지만, 주된 차이점은 주입 할 빈을 찾는데 필요한 실행 경로입니다. @Resource는 먼저 이름 옆에 유형을 입력하고 마지막으로 한정어로 검색 범위를 좁 힙니다 (이름이 일치하는 경우 무시됩니다). @Autowired와 @Inject는 먼저 한정자와 마지막으로 이름별로 검색 범위를 좁 힙니다.
-
==============================
2.
|------------|---------------|---------------|---------------|-----------------------| | | Setter/Field | Constructor | Applicable to | Matching order | | | injection | injection | type | | |------------|---------------|---------------|---------------|-----------------------| | @Autowired | X | X | | Type, Qualifier, Name | |------------|---------------|---------------|---------------|-----------------------| | @Inject | X | X | | Type, Qualifier, Name | |------------|---------------|---------------|---------------|-----------------------| | @Resource | X | | X | Name, Type, Qualifier | |------------|---------------|---------------|---------------|-----------------------|
그래서 스프링 의존성 삽입에서 @Inject와 @Autowired는 똑같은 행동을합니다.
-
==============================
3.@Haim 대답 외에도 Spring과 JSR-330 (Java 용 Dependency Injection) 주석의 차이에 대한 좋은 설명과 Spring과 함께 마지막을 사용하는 방법이있다.
@Haim 대답 외에도 Spring과 JSR-330 (Java 용 Dependency Injection) 주석의 차이에 대한 좋은 설명과 Spring과 함께 마지막을 사용하는 방법이있다.
from https://stackoverflow.com/questions/20450902/inject-and-resource-and-autowired-annotations by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 부팅 보안 CORS (0) | 2018.12.21 |
---|---|
[SPRING] Apache Commons Logging의 런타임 검색 알고리즘 문제는 무엇입니까? (0) | 2018.12.21 |
[SPRING] Spring-MVC : "컨텍스트"와 "네임 스페이스"란 무엇입니까? (0) | 2018.12.21 |
[SPRING] Spring MVC : <context : component-scan>과 <annotation-driven /> 태그의 차이점은 무엇입니까? [복제] (0) | 2018.12.21 |
[SPRING] server.xml 또는 context.xml에 데이터베이스 연결 속성을 설정해야합니까? (0) | 2018.12.21 |