Spring 주해 자동 조립 과정 분석 실현

IOC 용기 에서 관련 주 해 를 배우 기(상용)
1.@Autowireda.역할 대상:(홈 페이지 설명)
1. You can apply the @Autowired annotation to constructors:
2.you can also apply the @Autowired annotation to "traditional" setter methods:
3.You can also apply the annotation to methods with arbitrary names and/or multiple arguments:
4.You can apply @Autowired to fields as well and even mix it with constructors:
5.It is also possible to provide all beans of a particular type from the ApplicationContext by adding the annotation to a field or method that expects an array of that type:
6.타 입 된 맵 도 예 상 된 키 유형 이 String 인 경우 자동 유선 으로 사용 할 수 있 습 니 다.맵 값 은 예 상 된 유형의 모든 콩 을 포함 하고 키 에는 해당 하 는 bean 이름 이 포 함 됩 니 다.등
요약 하면 구조 기,set 방법,임 의 방법 과 속성,배열,String 유형의 Map 등 이 있 습 니 다.
Notes:1.@Autowired 는 기본적으로 유형 별로 조립 합 니 다(이 주 해 는 업 스프링 에 속 합 니 다).기본 적 인 상황 에서 의존 대상 이 존재 해 야 합 니 다.null 값 을 허용 하려 면 required 속성 을 false 로 설정 할 수 있 습 니 다.
2.@qualifier 와 공동으로 사용 할 수 있 습 니 다.대상 유형 과 이름 이 충돌 할 때 이 주 해 는 특정한 대상 을 지정 하 는 데 사용 할 수 있 습 니 다.
 @Autowired()
 @Qualifier("cat")
id="cat"의 beanb 를 찾 을 수 있 습 니 다.기능:클래스 구성원 변수,방법 및 구조 함 수 를 표시 하여 자동 조립 작업 을 완성 할 수 있 습 니 다.@Autowired 의 사용 을 통 해 set,get 방법 을 제거 합 니 다.2.@Resource.기능:@Resource 의 역할 은@Autowired 에 해당 합 니 다.@Autowired 는 by Type 에 따라 자동 으로 주입 되 지만@Resource 는 기본적으로 by Name 에 따라 자동 으로 주입 됩 니 다.
@Resource 는 두 가지 속성 이 비교적 중요 합 니 다.name 과 type 으로 나 뉘 는데 Spring 은@Resource 주해 의 name 속성 을 bean 의 이름 으로 해석 하고 type 속성 은 bean 의 유형 으로 해석 합 니 다.따라서 name 속성 을 사용 하면 by Name 의 자동 주입 정책 을 사용 하고 type 속성 을 사용 할 때 by Type 자동 주입 정책 을 사용 합 니 다.name 도 지정 하지 않 고 type 속성 도 지정 하지 않 으 면 반사 체 제 를 통 해 by Name 자동 주입 정책 을 사용 합 니 다.
3.@Requireda.기능:@Required 주석 은 bean 속성 에 적용 되 는 setter 방법 입 니 다.이것 은 영향 을 받 은 bean 속성 이 설정 할 때 XML 설정 파일 에 넣 어야 한 다 는 것 을 나타 냅 니 다.그렇지 않 으 면 용기 에 BeanInitialization Exception 이상 을 던 집 니 다.다음은@Required 주석 을 사용 하 는 예제 입 니 다.
이것 은@Required 에 대한 좋 은 해석 과 예 가 있 습 니 다.
@Autowired 사용 후의 장점
원래 우 리 는 수 동 으로 주입 한 후에 야 employee 대상 을 사용 할 수 있 었 다.<bean> <property name="employee" ref="employee"/>수 동 주입 을 하지 않 으 면 테스트 코드 에서 employee 대상 을 가 져 오지 않 습 니 다.
@Autowired 사용 후
수 동 주입 필요 없어 요.<bean id="car" class="com.ding.pojo.Car"/>속성 상 으로 만@Autowired 주석 표 시 를 진행 합 니 다.

테스트 클래스 에서 직접 호출 가능:

public class MyTest {
  public static void main(String[] args) {
   
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  
    Car car = (Car) context.getBean("car");
    car.getOwner().MyEmployment();
  
  }
}
시스템 은 먼저 bean 중의 class 유형 에 따라 확인 한 다음 에 bean 중의 id 이름과 확인 한 다음 에 정 해진 주입 대상 을 확정 합 니 다.여러 bean 의 이름 이 다 르 고 유형 이 같 으 면 이 주석 은 유효 하지 않 습 니 다.(@Qualifier 를 사용 하여 유일 하 게 지정 가능)
예 를 들 면:

  
같은 코드 를 실행 하면 다음 과 같은 오 류 를 보고 합 니 다.

이 때@Qualifier 주석 을 추가 하면 코드 를 정상적으로 컴 파일 할 수 있 습 니 다.

실행 결과:

공유 내용 에 문제 가 있 는 부분 이 있 으 면 더 지적 해 주 십시오.방문 해 주 셔 서 감사합니다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기