의존성 관리
스프링 프레임워크는 개발에 필요한 각 모듈의 의존성을 직접 설정해야 한다. 그리고 호환되는 버전을 명시해야 정상적으로 동작한다.
하지만 스프링 부트에서는 'spring-boot-starter'라는 의존성을 제공한다. 여러 종류, 그리고 각 라이브러리의 기능과 관련해 자주 사용되고 서로 호환되는 버전의 머듈 조합을 제공한다. 이를 통해 개발자는 라이브러리 호환 문제를 해결할 수 있는 것이다.
자동설정
스프링 부트는 스프링 프레임워크의 기능을 사용학 위해 자동 설정(Auto Configuration)을 지원한다. 자동 설정은 애플리케이션에 추가된 라이브러리를 실행하는 데 필요한 호나경 설정을 알아서 찾아준다. 즉, 애플리케이션을 개발하는 데 필요한 의존성을 추가하면 프레임워크가 이를 자동으로 관리해준다.
예로 들면, @SrpingBootApplication 어노테이션이 있다. 이 어노테이션은 여러 어노테이션을 합쳐 놓은 인터페이스이다.
스프링 부트 애플리케이션이 실행되면 @ComponentScan 어노테이션이 @Component 시리즈 어노테이션이 붙은 크랠스를 발견해 빈(bean)에 등록한다. 이후 @EnableAutoConfiguration 어노테이션을 통해 'spring-boot-autoconfigure' 패키지 안에 spring.factories 파일을 추가해 다양한 자동 설정이 일부 조건을 거쳐 적용된다.
이 설정은 각 파일에 설정된 @Conditional의 조건을 충족할 경우 빈에 등록되고 애플리케이션에 자동 반영된다.
내장 WAS
스프링 부투의 각 웹 애플리케이션에는 내장 WAS(Web Applicaiton Server)가 존재한다.
스프링 부투의 자동 설정 기능은 톰캣에도 적용 되어 설정 없이도 톰캣을 실행할 수 있다.
물론, 필요에 따라 톰캣이 아닌 다른 웹 서버(Jetty, Undertow 등)로 대체할 수도 있다.
모니터링
개발이 끝나고 서비스를 운영하는 시기가 오면 해당 시스템이 사용하는 스레드, 메모리, 세션 등의 주요 요소들을 모니터링해야 한다. 스프링 부트에는 스프링 부트 액추에이터(Spring Boot Actuator)라는 지체 모니터링 도구가 있다. 이는 다른 글에서 조금 더 자세히 다뤄보겠다!