1. Component Scanning을 통한 의존관계 자동 주입
- @ComponentScan 애노테이션이 붙어 있는 클래스가 있는 패키지에서부터 모든 하위 패키지의 모든 클래스를 탐색하여, @Component 애노테이션이 붙은 클래스를 스캔하고 이를 스프링 빈으로 등록한다.
- 참고로 @SpringBootApplication 애노테이션 내부에도 @ComponentScan 애노테이션이 존재한다.
컴포넌트 스캔 기본 대상 | - @Controller: 스프링 MVC 컨트롤러에서 사용된다. - @Service: 스프링 비즈니스 로직에서 사용된다. - @Repository: 스프링 데이터 접근 계층에서 사용된다. - @Configuration: 스프링 설정 정보에서 사용된다. - @Component: 컴포넌트 스캔에서 사용된다. 위의 애노테이션은 모두 @Component 애노테이션을 갖고 있다. |
2. 빈 설정 파일에 직접 스프링 빈 등록
- 빈 설정 파일은 XML 혹은 Java 설정 파일로 작성이 가능하다.
- Java 설정 파일은 Java 클래스를 통해 작성이 가능하며, 일반적으로 OOOConfiguration이라고 이름을 짓는다. 클래스에 @Configuration 애노테이션을 붙이고, @Bean 애노테이션을 통해 직접 빈을 등록할 수 있다.
- @Configuration 애노테이션 안에는 @Component 애노테이션이 포함되어 있기 때문에, @ComponentScan 애노테이션의 스캔 대상이 된다.
@Configuration
public class TestConfiguration {
@Bean
public TestController testController() {
return new firstTestController();
}
}
3. 정형화된 Controller, Service, Repository 같은 코드들은 Component Scanning을 사용한다. 그러나 정형화되지 않고, 상황에 따라 구현 클래스를 변경해야 하면 빈 설정 파일에 직접 스프링 빈을 등록하는 방법을 사용한다.
참고
- 『스프링 핵심 원리 - 기본편』
'Spring' 카테고리의 다른 글
의존관계 주입 시 bean이 2개 이상일 때 해결 방법 (0) | 2021.10.11 |
---|---|
Lombok library가 제공하는 애노테이션 (0) | 2021.10.11 |
다양한 의존관계 주입 방법 (0) | 2021.10.11 |
IoC, DI, Bean, Container (0) | 2021.10.08 |
Spring boot welcome page 설정 (0) | 2021.10.07 |