old posting/Spring Framework

[Spring] @Autowired

마케팅스프린트 2021. 6. 12. 19:01
  • @Autowired
    • 필요한 의존 객체의 타입에 해당하는 빈(Bean)을 찾아 주입한다.
    • required
      • 기본값은 true (따라서 찾지 못하면 어플리케이션 구동 실패)
    • 사용할 수 있는 위치
      • 생성자 (스프링4.3 부터는 생략 가능)
      • setter
      • 필드
    • 경우의 수
      • 해당 타입의 빈이 없는 경우
      • 해당 타입의 빈이 한개인 경우
      • 해당 타입의 빈이 여러개인 경우
        • 빈 이름으로 시도
          • 같은 이름의 빈을 찾으면 해당 빈 사용
          • 같은 이름의 빈을 못찾으면 실패
    • 같은 타입의 빈이 여러개 일 때
      • @Primary
      • 해당 타입의 빈 모두 주입 받기
      • @Qualifler (빈 이름으로 주입)
    • 동작 원리
      • BeanPostProcessor
        • 새로 만든 빈 인스턴스를 수정할 수 있는 라이프 사이클 인터페이스
      • AutowiredAnnotationBeanPostProcessor extends BeanPostProcessor
        • 스프링이 제공하는 @Autowired와 @Value 어노테이션 그리고 JSR-330의 @Inject 어노테이션을 지원하는 어노테이션 처리기