주입 및 리소스 및 자동 연결 주석
@Inject
및 @Resource
및 @Autowired
주석 의 차이점은 무엇입니까 ?
각각을 언제 사용해야합니까?
@Inject 대 @Autowire 대 @Resource의 차이점은 무엇입니까?
@Autowired : 유형별로, 즉 주석이 달린 필드 또는 계약자의 인터페이스에 의해 클래스별로 리소스를 주입하는 스프링 고유 주석 (@Inject 및 @Resource와 반대). 인터페이스 나 서브 클래스의 구현이 거의없는 경우 @Qualifier 주석을 사용하여 선택 범위를 좁혀 모호함을 피할 수 있습니다. 대체 일치의 경우 Bean 이름은 기본 규정 자 값으로 간주됩니다. 이 규칙을 사용하여 특정 빈을 이름으로 참조 할 수 있지만 @Autowired는 기본적으로 선택적 의미 한정자를 사용한 유형 기반 주입에 관한 것입니다.
@Inject :JSR-330 (Java 용 종속성 주입) 기반 주석은 주입 가능한 생성자, 메서드 및 필드를 식별합니다. 이 주석은 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는 먼저 유형별로 검색 한 다음 한정자별로, 마지막으로 이름별로 검색 범위를 좁 힙니다.
|------------|---------------|---------------|---------------|-----------------------|
| | 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
정확히 같은 동작을합니다.
@Haim 답변 외에도 Spring과 JSR-330 (Java 용 종속성 주입) 주석의 차이점과 Spring에서 마지막 주석을 사용하는 방법에 대한 좋은 설명 이 있습니다.
참고 URL : https://stackoverflow.com/questions/20450902/inject-and-resource-and-autowired-annotations
'programing tip' 카테고리의 다른 글
부트 스트랩 : 하나가 확장되면 다른 섹션 축소 (0) | 2020.11.27 |
---|---|
Ctrl + R은 SSMS에서 쿼리 결과 창을 숨기지 않습니다. (0) | 2020.11.27 |
이미지 UriSource 및 데이터 바인딩 (0) | 2020.11.27 |
Eclipse 서버 시작 시간 초과를 어떻게 비활성화 할 수 있습니까? (0) | 2020.11.27 |
읽기 전용 종속성 속성을 어떻게 생성합니까? (0) | 2020.11.27 |