더북(TheBook)

앞 예제에서는 HelloWorld 컨트롤러가 WebApplication 클래스와 다른 패키지에 선언돼 있어, 이를 scanBasePackageClasses 사용법을 알아보는 기회로 활용했습니다.

이쯤 되면 기본 웹 애플리케이션을 개발할 때 생성해야 할 web.xml 구성 파일과 그 외 모든 컴포넌트가 어디에 있는지 궁금할 것입니다. 하지만 앞에서 작성한 코드들이 정의해야 할 전부입니다. 믿지 못하겠으면 프로젝트를 컴파일하고 WebApplication 클래스를 실행해 애플리케이션이 시작됐다는 메시지가 나올 때까지 살펴보기 바랍니다. 생성되는 로그 파일을 보면 매우 적은 코드임에도 많은 일이 일어나는 것을 알 수 있을 것입니다. 가장 주목해야 할 것은 톰캣이 실행되고 있는 듯하다는 것과 상태 체크, 환경 정보 출력, 측정과 같은 접속 주소가 컨테이너에 등록됐다는 것입니다. 먼저 http://localhost:8080에 접속하면 예상대로 Hello World 웹 페이지를 볼 수 있을 것입니다. 다음으로 사전에 구성된 접속 주소(예를 들어 http://localhost:8080/actuator/health는 애플리케이션 상태를 알려주는 JSON 문자열을 반환합니다)를 살펴봅시다. 다음으로 http://localhost:8080/actuator/metrics에 접속하면 힙(Heap) 메모리 크기나 가비지 컬렉션(Garbage Collection) 등 측정 정보를 확인할 수 있습니다.

이 예제만으로도 스프링 부트가 어떤 유형의 애플리케이션이던 상관없이 애플리케이션을 만드는 방법을 근본적으로 단순화한다는 것을 충분히 알 수 있을 것입니다. 동작하는 간단한 웹 애플리케이션을 만들려고 수많은 파일 구성을 해야 하던 시절은 지나갔습니다. 개발자가 작성하는 웹 애플리케이션을 서비스할 준비가 된 임베디드 서블릿 컨테이너만 있으면 특별한 구성 없이도 모든 것이 잘 동작합니다.

간단한 예제를 보여줬지만, 스프링 부트가 모든 선택 사항을 강제하는 것은 아님을 염두에 두기 바랍니다. 스프링 부트는 모든 것이 사전에 준비돼 있을 뿐이며 개발자의 수고를 덜려고 구성 기본값을 구성해 줄 뿐입니다. 임베디드 톰캣을 사용하지 않고 대신 제티(Jetty)를 사용하려면 구성 파일을 간단히 수정해 spring-boot-starter-web 의존성에서 톰캣 스타터 모듈을 제외하면 됩니다. 그레이들 프로젝트 뷰를 사용하거나 프로젝트 의존성을 살펴보는 것은 프로젝트가 어떤 의존성을 사용하고 있는지 파악하는 데 도움이 됩니다. 또한, 스프링 부트는 그 밖의 다양한 유형의 애플리케이션을 지원하려고 많은 스타터 의존성을 제공합니다. 제공되는 문서를 참고해 더 자세한 내용을 알아보기 바랍니다.

스프링 부트 관련 더 자세한 내용은 프로젝트 페이지(http://projects.spring.io/spring-boot/)를 참고하기 바랍니다.

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