두 가지 방법의 차이점은 보이지 않습니다. @Qualifier은 항상 @Autowired과 함께 사용됩니다.@Qualifier와 @Resource의 차이점
@Autowired
@Qualifier("alpha")
VS
@Resource(name="alpha")
사람은 나를 차이를 알려 수 있을까? 감사!
두 가지 방법의 차이점은 보이지 않습니다. @Qualifier은 항상 @Autowired과 함께 사용됩니다.@Qualifier와 @Resource의 차이점
@Autowired
@Qualifier("alpha")
VS
@Resource(name="alpha")
사람은 나를 차이를 알려 수 있을까? 감사!
@Autowired
은 단독으로 사용할 수 있습니다. 단독으로 사용하는 경우 유형별로 배선됩니다. @Autowired
이 주입 할 빈을 모르기 때문에 컨테이너에 같은 유형의 빈이 하나 이상 선언 된 경우 문제가 발생합니다. 그 결과, 실제로는 (유선 이름) 빈 이름
@Resource
너무 이름으로 연결되어 유선으로 지정 될 수있는 빈 명확히 @Autowired
함께 @Qualifier
를 사용한다. 따라서 @Autowired
을 @Qualifier
과 함께 사용하는 경우 @Resource
과 동일합니다.
차이점은 @Autowired
과 @Qualifier
은 스프링 주석이고 @Resource
은 JSR-250의 표준 자바 주석입니다. 게다가 @Resource
은 필드와 설정자 주입 만 지원하며 @Autowired
은 필드, 설정자, 생성자 및 다중 인수 메소드 주입을 지원합니다.
필드 및 설정자 삽입에 @Resource
을 사용하는 것이 좋습니다. 생성자 또는 다중 인수 메소드 삽입을 위해 @Qualifier
및 @Autowired
을 지정하십시오.
는 this를 참조하십시오
당신이 이름으로 주석 중심의 주입을 표현하려는 경우, 기본적으로 @Autowired를 사용하지 않습니다 - @Qualifier 값을 통해 빈 이름 을 참조하는 기술적 할 경우에도 마찬가지입니다. 대신 고유 한 이름으로 특정 대상 구성 요소를 식별하기 위해 의미가 정의 된 JSR-250 @Resource 주석을 선호하며 선언 된 유형 은 일치 프로세스와 관련이 없습니다.
실제로 그 부분은 무엇입니까? 이름으로 autowire를 원한다면 리소스 사용이 권장되는 곳을 보지 못합니다 (일부 상황에서는 실제로 작동하지 않을 것입니다). –
이 업데이트되었습니다. 3.11.3의 팁 섹션에 있습니다. –
@Autowired는 올드 스쿨 봄입니다. @Resource는 Java EE CDI 표준입니다. Spring은 (매우 비슷한 @Inject와 마찬가지로) 두 가지 상황 모두에서 똑같은 작업을 수행합니다. @Resource를 권하고 싶습니다. @Autowired는 표준 이전에 만들어졌으며 대부분 이전 버전과의 호환성을 위해 지원되는 것으로 보입니다.
의 가능한 중복 @ Resource는 현재 스프링 표준입니다. Spring Bean에서 @ Autowired가 아닌 @ Resource를 사용해야합니다. –
@Autowired와 관련된 몇 가지 문제에 직면하여 @Qualifier를 사용하기 시작했으며 같은 유형의 여러 빈이 정의되었을 때 @Qualifier를 @Autowired로 사용할시기를 마침내 알 수있었습니다.
당신이 동일한 유형이지만 다른 값의 2 콩 정의 가정 : 다음<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;
대신 bean 이름과 동일한 변수 이름을 사용하면 @Qualifier를 사용하지 않아도됩니다.
@Autowired
AppContext appContext1;
나는 항상 빈 이름과 같은 변수 이름을 사용하지만, 실수로 다른 변수 이름을 가지고이 문제에 직면했다.
의심되는 점이 있으면 알려주세요.
[Resource @Autowired] (http://stackoverflow.com/questions/4093504/resource-vs-autowired) – skaffman