[TIL] 2020.08.17_TIL

TO_DO

  • [프로젝트] 제안서 ppt 완성
  • [프로젝트] 목업 완성
  • [복습] 스프링 수업 복습

스프링 annotation

1. DI 자동 주입

  • XML 파일이 너무 커지는 것을 방지
  • 자동 주입 기능 사용시 스프링이 알아서 의존 객체를 찾아서 주입
  • 자동 주입 기능 사용 방법
    • XML 파일에 설정을 추가
    • Java 파일의 의존주입대상에 @Autowired 또는 @Resource 설정

2. @Autowired 와 @Resource의 차이점

  • 공통적인 특징은 의존관계를 자동으로 연결해주는 기능을 가진 어노테이션이라는 것
  • 차이점
@Autowired @Resource @Inject
스프링 전용 자바에서 지원 자바에서 지원
타입에 맞춰서 연결 이름으로 연결 타입에 맞춰 연결

3. 자동주입 사용방법

1) 사용방법

  • 1) 자동주입 대상에 @Autowired 어노테이션 사용
  • 2) xml 설정에 설정 추가
  • 이 두가지를 하면, @Autowired가 적용된 의존 주입 대상에 대해서는 태그나 태그를 사용하지 않아도 스프링이 알맞은 의존객체 주입

2) 동일한 type을 가진 빈 객체가 없는 경우 @Autowired의 동작

  • 아래의 코드와 같이 동일한 객체 타입을 가지는 경우 예외가 발생한다.
<bean id="printer1" class="spring.MemberPrinter">
<bena id="printer2" class="spring.MemberPrinter">

3) 해결책

  • @Qualifier 어노테이션 지원

    [pom.xml]

      <bean id="printer1" class="spring.Member-printer">
          <qualifier value="sysout" />
      </bean>
      <bean id="printer2" class="spring.Member-printer">
    

    [setPrinter.class]

      @AutoWired
      @Qualifier("sysout")
      public void setPrinter(MemberPrinter printer){
          system.out.println("setPrinter : " + printer );
          this.printer = printer;
      }
    
    • Qualifier 값으로 sysout 지정하면 printer1 빈 객체가 주입된다.

4. @Autowired 어노테이션 적용 순서

  • 1) 타입이 같은 빈객체를 우선 검색한다. 한 개일 경우 해당 객체를 사용하고 @Qualifier가 명시된 경우, @Qualifier와 같은 값을 갖는 빈 객체여야 한다.
  • 2) 타입이 같은 빈객체가 두 개이상 존재할 때, @Qualifier로 찾는다.

  • 3) 타입이 같은 빈객체가 두 개이상 존재할 때, @Qualifier가 없는 경우 이름이 같은 빈 객체를 찾는다.

5. component-scan

  • 1) xml 파일 설정을 통해서 자동으로 빈으로 사용 될 객체를 등록한다.
    • 지정된 패키지 하위의 모든 패키지를 스캔하여 빈 등록
    • @Component, @Controller, @Service, @Repository

태그: ,

카테고리:

업데이트:

댓글남기기