Spring Boot는 Spring Framework를 기반으로 한 자바 애플리케이션 개발을 간편하게 만들어주는 도구이다 .
기존의 Spring Framework를 사용할 때, 개발자는 설정(XML 또는 Java 기반)을 직접 작성해야 하고, 복잡한 의존성 관리나 환경 설정이 필요했다.
Spring Boot는 이러한 번거로움을 해결하기 위해 등장한 "Spring의 간소화된 확장 버전"이라고 할 수 있다.

@SpringBootApplication은 Spring Boot 애플리케이션을 설정하는 기본 어노테이션으로 내부적으로 아래 세 가지 어노테이션을 포함하고 있다.
@SpringBootConfiguration: Spring의 설정 클래스를 정의@EnableAutoConfiguration: Spring Boot의 자동 설정 기능을 활성화@ComponentScan: 현재 패키지와 하위 패키지에서 Spring 빈(Bean)을 검색이를 통해 추가 설정 없이 Spring Boot의 기본 기능을 바로 사용할 수 있다.
✔️ @Configuration
Bean 등록: 메서드에 @Bean을 붙이면 해당 객체가 Spring 컨테이너에 빈으로 등록됨
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
✔️ @EnableAutoConfiguration
spring-boot-starter-web은 Spring MVC와 관련된 라이브러리(Tomcat, Spring Web, Jackson 등)를 포함하고 있다.
@EnableAutoConfiguration이 없다면 Spring Boot의 자동 설정 기능이 동작하지 않으므로 Spring MVC 설정과 내장 서버 구성을 직접 해야 한다.
✔️ @ComponentScan
@Component, @Service, @Repository, @Controller 등이 붙은 클래스를 찾아 자동으로 Spring Bean으로 등록한다스타터 의존성은 특정 기능을 간편하게 구현할 수 있도록 관련 라이브러리를 묶어 제공하는 패키지이다.
spring-boot-starter-web: RESTful 웹 서비스와 MVC 구현에 필요한 의존성spring-boot-devtools: 코드 변경 시 애플리케이션 자동 재시작, 리소스 변경 시 브라우저 라이브 리로딩 등 개발 편의성 제공spring-boot-starter-test: 테스트 작성에 필요한 JUnit, Mockito 등의 의존성junit-platform-launcher: 테스트 실행을 위한 런처Spring Boot 애플리케이션은 내장 웹 서버(Tomcat, Jetty 등)를 포함하고 있어 별도의 외부 WAS 없이 실행 가능하며 JAR 파일로 패키징되어 배포와 실행이 간편하다.
애플리케이션 모니터링 및 관리를 지원하는 도구이다.

Spring Boot는 application.properties나 application.yml 파일을 통해 환경 설정을 간편하게 구성.
예) 내장 서버 포트를 변경: server.port=8081
Spring Boot CLI(Command Line Interface)는 명령줄에서 애플리케이션을 실행하거나 테스트할 수 있고, Groovy 스크립트를 활용해 빠르게 애플리케이션 작성 가능하다.