ye._.veloper

[ SpringBoot ] @SpringBootApplication / Bean 등록 본문

Spring

[ SpringBoot ] @SpringBootApplication / Bean 등록

ye._.veloper 2023. 7. 9. 23:02

  @SpringBootApplication

@SpringBootApplication
public class SpringBootApplication {
	
    public static void main(String[] args) {
    	SpringApplication.run(SpringBootDeveloperApplication.class, args);
    }
}

  위 SpringBootApplication ClassJava의 main() 메서드와 같은 역할

       · 즉, 여기서 SpringBoot가 시작된다.

       · @SpringBootApplication 애너테이션을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해준다.

 

  SpringApplication.run() 메서드는 애플리케이션을 실행

       · 첫 번째 인수는 SpringBoot 3 Application의 메인 클래스로 사용할 클래스

      · 두 번째 인수는 커맨드 라인의 인수들을 전달

 

@SpringBootApplication의 의미를 파악해보자


  @SpringBootApplication Annotation 구성을 알아보자

       · IDE에서 Ctrl + @SpringBootApplication 클릭을 하여 구성으로 들어가면 아래와 같은 코드를 확인할 수 있다.

 

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration	// Spring Boot 관련 설정
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM,
// 사용자가 등록한 Bean을 읽고 등록
classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM,
classes = AutoConfigurationExcludeFilter.class)
})
@EnableAutoConfiguration	// 자동으로 등록된 Bean을 읽고 등록
public @interface SpringBootApplication {
	// 생략
}

 

 @SpringBootConfiguration

       · SpringBoot 관련 설정을 나타내는 Annotation

       · @Configuration을 상속해서 만든 Annotation

 

@ComponentScan

       · 사용자가 등록한 Bean을 읽고 등록하는 Annotation

       · @Component를 가진 클래스들을 찾아 Bean으로 등록하는 역할

             · 모든 Bean에 @Component만 사용하는 것은 아니고, 아래와 같이 용도에 따라 다른 Annotation을 사용한다.

Annotation Name Description
@Configuration 설정 파일 등록
@Repository ORM 매핑
@Controller, @RestController 라우터
@Service Business Logic

 

@EnableAutoConfiguration

       · SpringBoot에서 자동 구성을 활성화하는 Annotation

       · SpringBoot Server가 실행될 때 SpringBoot의 메타 파일을 읽고 정의된 설정들을 자동으로 구성하는 역할을 수행

 

 

☁ TestController로 Bean이 어떻게 등록되는지 알아보기

아래는 예시로 작성한 TestController

@RestController
public class TestController{
	
    @GetMapping("/test")
    public String test(){
    	return "Hello World";
    }
}

@RestController

       · Router 역할을 하는 Annotation

           # Router란?  HTTP 요청과 메서드를 연결하는 장치

 

       · 이 애너테이션이 있어야 Client의 요청에 맞는 메서드를 실행할 수 있다.

 


  마무리

@SpringBootApplication은 아래 세 개로 이뤄져 있다.

       · SpringBoot 관련된 설정을 하는 @SpringBootConfiguration

       · 사용자가 등록한 Bean을 읽고 등록하는 @ComponentScan

       · 자동 설정으로 등록되는 Bean을 읽고 등록하는 @EnableAutoConfiguration

 

@Component Annotation이 있는 Class는 Bean으로 등록된다.

 

@Controller, @RestController, @Configuration, @Repository, @Service 모두 @Component Annotation을 갖고 있다.

       · 용도에 맞게 때에 따라 알맞은 Annotation을 선택하여 사용

 

 

 

 

 

Ref. 

스프링부트3 백엔드 개발자 되기

 

Comments