Spring Boot는 기존의 Spring 프레임워크를 더 쉽고, 더 빠르게 사용할 수 있도록 만들어주는 프로젝트입니다. Spring Boot는 새로운 프레임워크가 아니라, Spring을 사용하기 위한 "발판(Booster)" 또는 "도구 모음"에 가깝습니다.
Spring의 문제점: Spring 프레임워크 자체는 매우 강력하지만, 애플리케이션을 개발하기 위해 수많은 XML 설정, 라이브러리 버전 호환성 체크, WAS(Web Application Server) 설정 등 복잡하고 반복적인 초기 설정이 필요했습니다.
Spring Boot의 해결책: 이러한 복잡한 설정을 자동화하고, 개발자가 비즈니스 로직에만 집중할 수 있는 환경을 제공하는 것을 목표로 합니다.
spring-boot-starter-web이 있다면 "아, 이건 웹 애플리케이션이구나!"라고 판단하고, 내장 톰캣(Tomcat), 디스패처 서블릿(DispatcherServlet), Jackson(JSON 변환 라이브러리) 등을 자동으로 설정하고 Bean으로 등록해줍니다.@SpringBootApplication 어노테이션이 바로 이 자동 구성을 활성화하는 스위치 역할을 합니다.8080 포트에서 실행됩니다.src/main/resources/templates 경로에서 찾습니다.application.properties나 application.yml 파일에 재정의하면 됩니다.spring-boot-starter-web 의존성을 추가하면, Tomcat이 라이브러리 형태로 프로젝트에 포함됩니다. 애플리케이션을 실행하면 이 내장 톰캣이 함께 구동됩니다.java -jar my-application.jar 명령어 하나만으로 어디서든 애플리케이션을 실행할 수 있어, 배포가 매우 간편해집니다.spring-boot-starter문제점 (의존성 지옥): Spring 개발 시, 수많은 라이브러리(spring-core, spring-webmvc, jackson, hibernate 등)를 추가해야 하며, 이들 간의 버전 호환성을 맞추는 것은 매우 어렵고 시간이 많이 걸리는 작업이었습니다.
starter의 역할: spring-boot-starter는 특정 목적에 필요한 관련 의존성들의 묶음입니다.
예시: spring-boot-starter-web이라는 의존성 하나만 추가하면, Spring MVC, 내장 Tomcat, Jackson 등 웹 애플리케이션 개발에 필요한 수십 개의 라이브러리들이 호환성이 검증된 버전으로 한 번에 추가됩니다.
장점: 개발자는 더 이상 개별 라이브러리의 버전을 신경 쓸 필요 없이, "나는 웹 개발을 할 거야"(starter-web), "나는 JPA를 쓸 거야"(starter-data-jpa)와 같이 목적에 맞는 starter만 선택하면 됩니다.
src/main/resources 경로에 있는 application.properties 또는 application.yml 파일을 사용하여, 데이터베이스 연결 정보, 서버 포트, 로깅 레벨 등 애플리케이션의 모든 설정을 외부에서 관리할 수 있습니다.application-dev.yml(개발용), application-prod.yml(운영용)과 같이 환경별로 다른 설정 파일을 쉽게 관리하고 전환할 수 있습니다.spring-boot-starter 의존성을 통해 복잡한 라이브러리 관리가 매우 간편해졌습니다.application.yml과 같은 외부 설정 파일을 통해 코드의 변경 없이 애플리케이션의 동작을 유연하게 제어할 수 있습니다.