Spring 학습 노트 (7) 리 소스 주석
평소 주입 에 가장 많이 의존 하 는 것 은 Autowired 주해 입 니 다. 실제로 Spring 이 제공 하 는 @ Autowired 와 @ Qualifier 를 사용 하여 해당 클래스 의 정 의 를 표시 할 수 있 는 것 외 에 Jdk 자체 의 @ Resource 와 @ Post Construct, @ PreDestroy 를 사용 하여 해당 클래스 를 표시 할 수 있 습 니 다. 이 역시 주입 에 의존 하 는 목적 을 달성 할 수 있 습 니 다. @리 소스 는 @ Autowired 와 달리 by Name 자동 바 인 딩 형식의 행동 준칙 을 따 릅 니 다. 즉, IoC 용 기 는 @ Resource 가 지정 한 이름 에 따라 용기 에서 beanName 에 해당 하 는 인 스 턴 스 를 찾 은 다음 찾 은 대상 인 스 턴 스 를 @ Resource 가 표시 한 대상 에 주입 합 니 다.다음은 예 시 를 통 해 알 아 보 겠 습 니 다.
2. 예시
먼저 Car 인 터 페 이 스 를 정의 합 니 다:
public interface Car {
public String print();
}
그리고 이 인 터 페 이 스 를 바탕 으로 두 가지 실현 클래스 를 정의 합 니 다.
@Component
public class Audi implements Car {
@Override
public String print(){
return "audi";
}
}
다 쓴 후에 우 리 는 Autowired 주 해 를 사용 하여 이 car 에 주입 할 수 있 습 니 다.
@RestController
public class TestController {
@Autowired
private Car car;
...
}
그러나 이 인터페이스 에 두 개의 실현 류 가 있다 면 다음은 벤츠 를 추가 합 니 다.
@Component
public class Benz implements Car {
@Override
public String print(){
return "benz";
}
}
이 때 주입 이 틀 릴 수 있 습 니 다. 이 유 는 Qualifier 주석 에서 언급 되 었 기 때 문 입 니 다. 우 리 는 Qualifier 주석 을 사용 하여 어떤 실현 류 를 사용 하 는 지 지정 할 수 있 습 니 다.본 고 는 또 다른 리 소스 주 해 를 사 용 했 고 이 문 제 를 해결 할 수 있다.
@RestController
public class TestController {
@Resource(name="audi")
private Car car;
...
}
이 주 해 를 사용 할 때, 매개 변수 name 을 통 해 어떤 실현 클래스 를 주입 할 지 지정 할 수 있 습 니 다.name 의 값 이 지정 되 어 있 지 않 으 면 Autowired 주해 만 사용 하 는 효과 와 같 습 니 다.
전체적으로 말 하면 이 Jdk 가 제공 하 는 Resouce 주해 와 Spring 이 제공 하 는 Autowired + Qualifier 주해 효과 가 많 지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.