구성정보를 지정하는 AutoAppConfig.java 클래스를 만든다.
@Configuration
@ComponentScan(
basePackages = "hello.core.member", // 탐색할 패키지의 시작 위치를 지정한다.
basePackageClasses = AutoAppConfig.class, //AutoAppConfig가 위치한 패키지를 basePackage 삼는다.
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
// 보통 실무에서는 @Configuration을 따로 제외하지 않지만, 기존 예제코드 최대한 남기기 위해 사용함.
// 컴포넌트 스캔을 사용하면 @Configuration 이 붙은 설정 정보도 자동으로 등록되기 때문에,
// AppConfig, TestConfig 등 앞서 만들어두었던 설정 정보도 함께 등록되고, 실행되어 버리기 때문.
)
public class AutoAppConfig {
}
@Configuration : 스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다.
@ComponentScan : @Component 어노테이션이 붙은 클래스를 모두 찾아서 자동으로 스프링 빈에 등록한다.
이때 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다.
아래의 예시 그림과 같이 동작한다.
만약 스프링 빈의 이름을 직접 지정하고 싶으면
@Component("memberService2") 이런식으로 이름을 부여하면 된다.
@Autowired 의존관계 자동 주입
생성자에 @Autowired 를 지정하면, 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입한다.
이때 기본 조회 전략은 타입이 같은 빈을 찾아서 주입한다.
getBean(MemberRepository.class) 와 동일하다고 이해하면 된다.
'Spring' 카테고리의 다른 글
[AppConfig] 앱의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 기획자. (0) | 2022.04.19 |
---|---|
스프링부트가 처음 실행될 때. @SpringBootApplication에 관하여. (0) | 2022.04.19 |
[프로젝트 생성] start.spring.io를 통해 프로젝트 생성하는 법 (0) | 2022.04.14 |