더북(TheBook)

5.1.3 무슨 일이 일어났을까?

이미 짐작했듯이 스프링 부트 CLI에는 단순히 그루비를 이용하여 스프링 애플리케이션을 쉽게 작성하는 것 외에도 많은 기능이 있다. 스프링 부트 CLI에는 몇 가지 숨은 기능이 있다.

CLI는 스프링 부트 자동 구성과 스타터 의존성을 활용할 수 있다.

CLI는 어떤 타입을 사용했는지 감지하고 해당 타입을 지원하려고 적절한 의존성 라이브러리를 자동으로 해석한다.

CLI는 흔히 사용하는 타입이 어느 패키지에 속하는지 알고 있으며, 해당 타입을 사용하면 그에 대응하는 패키지를 그루비의 기본 패키지로 추가한다.

CLI는 의존성 자동 해결과 자동 구성을 적용하여 실행 중인 웹 애플리케이션을 감지하고, 내장 웹 컨테이너(기본값은 톰캣)를 자동으로 포함해서 애플리케이션을 구동한다.

 

이는 CLI가 제공하는 기능 중 매우 중요하며 특징적이다. 그루비 문법은 보너스에 불과하다!

스프링 부트 CLI로 독서 목록 애플리케이션을 시작하면 몇 가지 마법 같은 모습을 볼 수 있다. 그중 CLI가 가장 먼저 보여 주는 마법은 내장 그루비 컴파일러를 이용하여 그루비 코드 컴파일을 시도하는 것이다. CLI는 여러분도 모르는 사이에 컴파일을 시도하지만 JdbcTemplate, Controller, RequestMapping 등 코드의 알 수 없는 타입 때문에 컴파일하지 못한다.

그러나 CLI는 컴파일을 포기하지 않는다. CLI는 스프링 부트 JDBC 스타터를 의존성으로 추가하면 클래스패스에 JdbcTemplate을 추가할 수 있다는 것을 안다. 또 스프링 부트 웹 스타터를 의존성으로 추가하여 스프링 MVC 타입을 찾을 수 있다는 것도 안다. 따라서 CLI는 메이븐 리포지토리(기본값은 Maven Central)에서 이런 의존성을 찾아 적용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.