목차
간단하게 Bean이란?
Spring IoC 컨테이너에 의해 관리되는 객체를 말합니다. 즉, 개발자가 직접 객체를 생성하거나 관리하지 않고, Spring이 대신 객체를 생성하고 생명주기를 관리합니다.
❓Bean이 IoC 컨테이너에의해 등록되는 방법 : `ComponentScan`을 통해!
@ComponentScan
Spring이 특정 패키지 내에서 `@Component` Annotaion이 붙은 클래스를 자동으로 검색하고, 이를 Spring IoC 컨테이너에 Bean으로 등록하는 기능입니다. 개발자가 Bean을 직접 등록하지 않고도 Spring이 자동으로 관리할 객체들을 찾습니다.
더보기


@ComponentScan 위치

- SpringBoot로 프로젝트를 생성하면, `main()` 메서드가 있는 클래스 상단에
`@SpringBootApplication` Annotaion이 존재합니다.

- `@SpringBootApplication`안 에 `@ComponentScan`이 존재합니다.
@ComponentScan 기본 사용 예
@Configuration
@ComponentScan(basePackages = "com.example.myapp")
public class AppConfig {
}
- 위 예제는 `com.example.myapp` 패키지와 그 하위 패키지를 스캔해서 Bean을 자동 등록합니다.
더보기
@ComponentScan의 속성
- basePackages: 특정 패키지를 스캔할 때 사용, 배열로 여러개를 선언할 수 있습니다.
- 예시: `@ComponentScan(basePackages = {"com.example", "com.another"})`
- basePackageClasses: 특정 클래스가 속한 패키지를 기준으로 스캔할 수 있습니다 .
- 예시: `@ComponentScan(basePackageClasses = MyApp.class)`
- excludeFilters: 스캔에서 제외할 클래스를 필터링할 수 있습니다 .
- 예시: `@ComponentScan(excludeFilters = @ComponentScan.Filter(SomeClass.class))`
- includeFilters: 특정 조건에 맞는 클래스만 스캔하여 포함할 수 있습니다 .
- 예시: `@ComponentScan(includeFilters = @ComponentScan.Filter(Service.class))`
@ComponentScan의 동작 순서
1. Spring Application이 실행되면 `@ComponentScan`이 지정된 패키지로부터 시작해서 모든 클래스 파일을 확인합니다.
2. `@Component` 계열 annotaion이 붙은 클래스들을 찾아 Bean Definition으로 등록합니다.
3. 찾은 클래스를 Spring 컨테이너(IoC 컨테이너)에 등록합니다.
4. 나중에 필요할 때 DI(의존성 주입) 등을 통해 Bean 객체를 사용합니다.
'Spring' 카테고리의 다른 글
[Spring] 의존 관계 주입 방법 4가지 (0) | 2025.05.23 |
---|---|
[Spring] Bean 등록 방법 (0) | 2025.05.23 |
[Spring] SOLID 원칙과 Spring의 등장 배경 (0) | 2025.05.15 |
[Project] Lv_2 스케줄 프로젝트 (0) | 2025.05.11 |
[Spring] Spring Framework와 Spring Boot: 왜 등장했고, 무엇이 다른가? (0) | 2025.05.10 |