Back Side/Framework > Spring Boot

[Spring Boot] Component Scan

developerBeluga 2025. 4. 13. 17:23
728x90
반응형

 

 

 

 

Spring Boot에서 Hello, World라는 글자를 브라우저에 띄우고 싶다고 하자. 그러면 우리는 어떻게 실행시켜줘야 할까? HelloController가 아닌 MySteplyApplication을 run 시켜줄거다. 왜? 왜 글자가 있는 HelloController가 아니라 MySteplyApplication을 실행시킬까?

 

Spring Boot의 Component Scan

Spring Boot는 @SpringBootApplication 어노테이션이 붙은 클래스 기준으로, 하위 패키지에 있는 모든 Bean들을 자동으로 찾아 등록해준다. 이때 @SpringBootApplication 안에는 @ComponentScan이 숨어 있다.

 

@ComponentScan(basePackages = "com.example.mysteply")

이 뜻은 이 패키지와 그 하위에서 @Component, @RestController 등을 자동으로 찾아서 등록해줘이다. 그래서 별도로 명시하지 않아도, Spring이 알아서 등록해주고, 실행된 서버에서 요청을 처리할 수 있게 된 것이다.

 

더보기

❗️ @SpringBootApplication에는 @ComponentScan 말고도 추가적으로 설정된 어노테이션들이 있다. 알아두면 좋은 것들은 아래와 같다.

- @Configuration: @SpringBootApplication에 같이 있는 @SpringBootConfiguration은 @Configuration을 통해 @Bean을 생성하고 Spring Continer에 등록할 수 있다. 

- @EnableAutoConfiguration: base package로 정의된 모든 Bean을 자동으로 구성한다. 그래서 가장 최상위 패키지에 선언된다.

 

 

 

Component Scan 범위

기본 방식

@ComponentScan(basePackages = "com.example")

 

여러 개 지정

@ComponentScan(basePackages = {"com.example.service", "com.lib.utils"})

 

특정 클래스 기준으로

@ComponentScan(basePackageClasses = {SomeClass.class})

 

 

수동 등록

@Configuration
public class AppConfig {
  @Bean
  public UserService userService() {
    return new UserService();
  }
}

 

 

 

728x90
반응형