주입 및 리소스 및 자동 배선 주석
사이에 무슨 차이가 있습니까?@Inject
그리고.@Resource
그리고.@Autowired
주석?
우리는 그것들을 언제 각각 사용해야 합니까?
@Inject 대 @Autowire 대 @Resource의 차이점은 무엇입니까?
@Autowired: (@Inject 및 @Resource와 대조적으로) 주석이 달린 필드 또는 계약자의 인터페이스에 의해 클래스별로 리소스를 주입하는 스프링 속성 주석.인터페이스 또는 하위 클래스의 구현이 거의 없는 경우, 모호성을 피하기 위해 @Qualifier 주석을 사용하여 선택 범위를 좁힐 수 있습니다.폴백 일치의 경우 빈 이름이 기본 한정자 값으로 간주됩니다.이 규약을 사용하여 특정 콩을 이름으로 참조할 수는 있지만 @Autowired는 기본적으로 선택적 의미 한정자가 있는 유형 기반 주입에 관한 것입니다.
@주입:JSR-330(Java용 종속성 주입)에 기반한 주석은 주입 가능한 생성자, 방법 및 필드를 식별합니다.이 주석은 Spring의 @Autowired 주석을 거의 완전히 대체한 것입니다.따라서 Spring별 @Autowired 주석을 사용하는 대신 @Inject를 사용할 수 있습니다.@Autowired와 @Inject의 차이점 중 하나는 @Inject에 필수 필드가 없으므로 주입할 적절한 개체를 찾지 못하면 실패하고 @Autowired는 required=false를 사용할 수 있으며 nullable 필드를 허용합니다(필요한 경우에만!).@Inject 주석의 장점은 참조를 직접 주입하는 대신 @Inject to inject a Provider(공급자 주입)를 요청할 수 있다는 것입니다.공급자 인터페이스는 무엇보다도 빈 참조의 느린 주입과 빈의 여러 인스턴스의 주입을 가능하게 합니다.인터페이스 또는 하위 클래스의 구현이 거의 없는 경우, 모호성을 피하기 위해 @Named 주석을 사용하여 선택 범위를 좁힐 수 있습니다.@이름 있는 주석은 Spring의 @Qualifier와 매우 유사하게 작동합니다.
@Resource: JSR-250에 기반한 주석. @Resource는 @Autowired 및 @Inject와 상당히 유사하지만, 주요 차이점은 주입에 필요한 콩을 찾는 데 걸리는 실행 경로입니다.@리소스는 먼저 이름을 기준으로 검색 범위를 좁힌 다음 유형을 기준으로 검색하고 마지막으로 한정자를 기준으로 검색 범위를 좁힙니다(이름으로 일치하는 항목이 발견되면 무시됨).@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' 카테고리의 다른 글
UIImageView에서 이미지에 맞는 가로 세로 맞춤을 적용한 후 이미지 크기를 확인하는 방법 (0) | 2023.07.30 |
---|---|
코틀린과 새로운 활동테스트 규칙: @Rule은 공개 규칙이어야 합니다. (0) | 2023.07.30 |
PowerShell의 'forach' 루프에서 해시 테이블 값 업데이트 (0) | 2023.07.30 |
이 MySQL 오류가 발생하지 않도록 하려면 어떻게 해야 합니까? COLUMN NAME에 대한 잘못된 열 지정자? (0) | 2023.07.30 |
데이트 시간(2008-09-01 12:35:45)의 정규식 패턴은 무엇입니까? (0) | 2023.07.30 |