Annotation
environment
variables
What ?
@Autowired
Spring은 어플리케이션이 실행될 때 @Component, @Service, @Repository, @Controller, @Bean 어노테이션이 붙은 클래스들을 스캔해 빈으로 등록하고 관리합니다.
IoC와 DI 기능을 활용하기 위해 사용하는 어노테이션입니다.
해당 필드, 생성자 파라미터, 또는 메서드 파라미터에 호환되는 타입의 빈을 찾아서 자동으로 주입하라고 지시합니다.
How ?
@AutowiredSpring은 @Autowired가 붙은 곳의 타입과 일치하는 빈을 컨테이너에서 찾습니다.
이 어노테이션이 붙은 클래스의 인스턴스를 생성하고, 필요에 따라 다른 빈에 주입할 수 있도록 관리합니다. @Service, @Repository, @Controller 등의 스테레오타입 어노테이션은 @Component를 상속받아 더 특정적인 역할을 나타내지만, 결국 Spring 빈으로 등록되는 것은 마찬가지입니다.
타입 기반 매칭 (Type-based matching): 가장 일반적인 방식입니다. 필드의 타입과 동일한 타입의 빈이 컨테이너에 하나만 존재하면 그 빈이 주입됩니다.
이름 기반 매칭 (Name-based matching): 타입 기반 매칭으로 여러 개의 호환되는 빈이 발견되면, 필드의 이름과 동일한 이름을 가진 빈을 찾아서 주입합니다.
@Qualifier 어노테이션: 특정 이름의 빈을 명시적으로 지정하고 싶을 때 @Qualifier("빈 이름") 어노테이션을 함께 사용할 수 있습니다.
@Primary 어노테이션: 여러 개의 동일한 타입의 빈이 있을 때, @Primary 어노테이션이 붙은 빈을 우선적으로 주입하도록 설정할 수 있습니다.