조건부 자동구성

기존 스프링 부트의 자동구성 과정

  1. @Configuration 클래스에 Infrastructure(인프라스트럭처, 기반) 빈 역할을 하는 빈으 구성 정보를 담음
  2. 기술 종류별로 쪼개서 여러 클래스를 만듦
  3. 외부 설정 파일에 목록을 나열 시킨 뒤
  4. 파일을 읽어서 해당하는 @Configuration 클래스를 애플리케이션이 시작할 때 빈으로 등록

스프링 부트가 기본적으로 가지고 있는 @AutoConfiguration

AutoConfiguration.class

2 usages.png

라이브러리

image.png

참고) 실제 사용은 몇가지 안된다하더라도 애플리케이션이 시작할 때마다 모든 빈을 다 생성하는 동작방식은 아님

각각의 Configuration 클래스 혹은 그 안에 정의된 @Bean이 붙은 Factory Method를 어떤 조건을 걸어서 적용할지 말지는 결정하는 프로세스를 거치게 되어있어서 사용하지 않는 기술은 포함시키지 않게 하면 됨

⇒ 이 과정을 알게되면 Configuration 앞에 Auto가 붙은 이유를 알게 될 것

AutoConfiguration 적용

조건) Tomcat 서버를 사용할지, Tomcat 서버 대신에 다른 종류의 서블릿 컨테이너( 예, Jetty 서버, Undertow ‍ 서버 )를 사용할지 선택할 수 있도록 변경

Tomcat (org.apache.catalina.startup - Gradle: org.apache.tomcat.embed:tomcat-embed-core:10.1.28)

image.png

Jetty 서버 사용하기

Jetty는 spring-boot-starter-web의 라이브러리로 등록되어 있지 않음