@Qualifier와 @Resource의 차이
나는 두 가지 방법 사이에 차이가 없다고 생각합니다. @Qualifier는 항상 @Autowired와 함께 사용됩니다.
@Autowired
@Qualifier("alpha")
대
@Resource(name="alpha")
누가 나에게 차이점을 알려줄 수 있습니까?감사합니다!
@Autowired
단독으로 사용할 수 있습니다.단독으로 사용할 경우 유형별로 유선으로 연결되므로 동일한 유형의 콩이 하나 이상 용기에 다음과 같이 선언될 경우 문제가 발생합니다.@Autowired
어떤 콩을 주사해야 할지 모르겠습니다.결과적으로, 사용합니다.@Qualifier
와 함께@Autowired
콩 이름을 지정하여 실제로 배선할 콩을 명확히 함(이름으로 배선)
@Resource
이름으로도 연결되어 있습니다.그래서 만약에@Autowired
와 함께 사용됩니다.@Qualifier
그것은 그것과 같습니다.@Resource
.
다른 점은@Autowired
그리고.@Qualifier
스프링 주석은 반면에@Resource
는 (JSR-250에서) 표준 Java 주석입니다.게다가.@Resource
필드 및 세터 주입만 지원하는 동안@Autowired
필드, setter, setter 및 다중 스레드 메소드 주입을 지원합니다.
를 사용하는 것이 좋습니다.@Resource
필드 및 세터 주입용입니다.고수@Qualifier
그리고.@Autowired
생성자 또는 다중 변수 방법 주입에 사용할 수 있습니다.
참조:
주석 기반 주입을 이름으로 표현하려면 기술적으로 @Qualifier 값을 통해 빈 이름을 참조할 수 있는 경우에도 @Autowired를 주로 사용하지 마십시오.대신, 선언된 유형이 일치 프로세스와 관련이 없으며 고유한 이름으로 특정 대상 구성 요소를 식별하도록 의미적으로 정의된 JSR-250 @Resource 주석을 선호합니다.
저는 @Autowired와 관련된 몇 가지 문제에 직면하고 있다가 @Qualifier를 사용하기 시작했고 마침내 같은 유형의 여러 콩이 정의될 때 @Autowired를 @Qualifier와 함께 사용해야 하는 시기를 알아낼 수 있었습니다.
같은 유형이지만 다른 값을 가진 두 개의 콩을 정의한다고 가정합니다.
<bean id="appContext1" class="com.context.AppContext">
<constructor-arg value="abc" />
<bean/>
<bean id="appContext2" class="com.context.AppContext">
<constructor-arg value="ABC" />
<bean/>
그런 다음 @Autowire를 사용하려는 경우 빈 이름과 동일한 변수 이름을 사용해야 합니다. 그렇지 않으면 여러 유형이 발견된 것과 같은 오류가 발생합니다.
@Autowired
AppContext appContext;
위의 사용 사례에서는 한정자를 사용해야 합니다.
@Autowired
@Qualifier("appContext1")
AppContext appContext;
대신 빈 이름과 동일한 변수 이름을 사용하는 경우 @Qualifier를 사용하지 않을 수 있습니다.
@Autowired
AppContext appContext1;
저는 항상 빈 이름과 같은 변수 이름을 사용하고 있었는데 실수로 다른 변수 이름을 가지고 있어서 이 문제에 직면했습니다.
의심스러운 점이 있으면 제게 알려주세요.
@자동배선은 오래된 학교 봄입니다.@리소스는 Java EECDI 표준입니다.스프링은 (매우 유사한 @Inject뿐만 아니라) 두 가지 상황 모두를 처리하고 거의 동일한 작업을 수행합니다.@Resource, @Autowired는 표준 이전에 만들어졌으며 주로 하위 호환성을 위해 지원되는 것으로 보입니다.
언급URL : https://stackoverflow.com/questions/9106416/difference-between-qualifier-and-resource
'UFO ET IT' 카테고리의 다른 글
숫자를 정수 및 소수 부분으로 분할 (0) | 2023.08.21 |
---|---|
어떻게 파이썬 프로그램을 배포할 수 있습니까? (0) | 2023.08.21 |
CSS 글꼴 속기에서 슬래시는 무엇을 의미합니까? (0) | 2023.08.21 |
카본으로 전월의 첫날과 마지막 날을 얻는 방법 - 라라벨 (0) | 2023.08.21 |
확인란 값은 항상 'on'입니다. (0) | 2023.08.21 |