@Autowired

JAEMM·2021년 8월 2일
0

Autowired 란

  • Spring의 의존성 주입 기능에 의해 자동 연결되도록 생성자, 필드, setter 메소드 또는 config 메소드에 표시.

Autowired 생성자

  • 주어진 bean 클래스의 하나의 생성자만이 필수 속성을 true로 설정하여 이 annotaion(autowired)을 선언할 수 있음.
  • required 속성이 true로 설정되면 단일 생성자에게만 @Autowired로 annotation이 달릴 수 있음.
  • 필요하지 않은 여러 생성자가 annotation을 선언하면 autowiring 후보로 간주됨.
  • 스프링 컨테이너에서 bean들을 매칭시켜서 만족될 수 있는 종속성이 가장 많은 생성자가 선택됨.
  • 후보중에서 어느것도 충족시키지 못하면 기본 생성자가 사용됨.
  • 유사하게, 클래스가 여러 생성자를 선언했지만 아무것도 @Autowired로 annotation 처리 되지 않은 경우 기본 생성자가 사용됨.
  • annotation이 달린 생성자는 public일 필요 없음.

Autowired 필드

  • 필드는 config 메소드가 호출되기전에 빈 생성 직후에 주입됨.
  • 이러한 config 필드는 public일 필요 없음.

Autowired Method

  • config 메소드는 임의의 인수를 가질 수 있음.
  • 이러한 각 인수들은 Spring 컨테이너에서 일치하는 빈으로 자동으로 연결됨.
  • 빈 속성 setter 메소드는 일반 config method의 특별한 경우
  • public 일 필요 없음.

Autowired Parameter

Autowiring Arrays, Collections, Maps

  • array, java.util.Collection, java.util.map의 dependency 타입의 경우, 컨테이너는 선언된 값의 유형과 일치하는 모든 bean들을 자동연결.
  • 이러한 목적을 위해, map의 키들은 반드시 대응하는 빈 이름으로 해석될 String으로 선언되어야 함.

BeanPostProcessor 또는 BeanFactoryProcessor에서 지원되지 않음.

  • 실제 주입은 BeanPostProcessor를 통해 수행되므로 @Autowired를 사용하여 BeanPostProcessor또는 BeanFactoryProcessor 유형에 레퍼런스를 주입할 수 없음.
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
	boolean required() default true;
}

BeanPostProcessor

  • 새로운 빈 인스턴스의 사용자정의 수정을 허용하는 팩토리 훅.

BeanFactoryProcessor

  • context의 기본 빈 속성값을 조정하여 application context의 bean 정의를 사용자의 정의에 따라 수정할 수 있도록 허용하는 팩토리 훅

0개의 댓글