1. 자동 구성(Auto-Configuration)
클래스패스 스캔: Spring Boot는 애플리케이션 실행 시 클래스패스에 있는 라이브러리와 설정 파일을 스캔한다.
조건부 설정: 특정 라이브러리가 존재하거나, 특정 빈(bean)이 없는 경우에만 자동으로 설정을 적용한다.
2. 의존성 주입 (Dependency Injection)와 제어의 역전 (IoC)
의존성 관리: 스프링 프레임워크의 핵심 개념인 DI와 IoC를 통해 애플리케이션 내의 객체 간의 의존성을 스프링 컨테이너가 관리한다.
유연성 및 테스트 용이성: 객체들이 직접 생성되기보다는 컨테이너에 의해 주입되므로, 코드의 결합도를 낮추고, 테스트 및 유지보수가 용이해진다.
3. 스타터 의존성 (Starter Dependencies)
편리한 의존성 관리: spring-boot-starter-web, spring-boot-starter-data-jpa 등과 같은 스타터를 사용하면, 필요한 라이브러리들을 한 번에 추가할 수 있다.
버전 관리: 필요한 모든 라이브러리의 버전이 호환되도록 관리되기 때문에, 개발자는 의존성 충돌에 신경 쓸 필요가 줄어든다.
4. 내장 서버 (Embedded Server)
즉시 실행: 별도의 WAS(Web Application Server) 설치 없이, Tomcat, Jetty, Undertow와 같은 내장 서버를 통해 바로 애플리케이션을 실행할 수 있다.
독립 실행혀이 JAR 파일 하나로 실행 가능한 독립적인 애플리케이션을 만들 수 있어, 배포와 운영이 간편하다.
5. 외부화된 설정 및 프로파일 (Extenalized Configuration & Profiles)
설정 파일: application.properties 또는 application.yml 파일을 통해 애플리케이션의 환경 설정을 외부화할 수 있다.
프로파일: 개발, 테스트, 운영 등 여러 환경에 맞게 프로파일을 설정하여, 환경별로 다른 설정을 손쉽게 적용할수 있다.
6. 컨벤션 over 설정 (Convention over Configuration)
기본 설정 제공: Spring Boot는 표준적인 설정을 미리 제공하여, 개발자가 초기 설정에 소요하는 시간을 줄여준다.
자동화된 설정: 기본 규칙에 따라 자동으로 동작하므로, 필요에 따라 커스터마이징 할 수 있는 유연성도 가지고 있다.
7. 모니터링 및 관리 (Actuator)
애플리케이션 관리: Actuator 모듈을 통해 애플리케이션의 상태, 메트릭, 트래픽, 로그 등을 모니터링 할 수 있는 다양한 앤드포인트를 제공한다.
그래서 Spring Boot는 자동 구성, 의존성 주입, 내장 서버 지원, 외부 설정, 그리고 스타터 의존성 등의 기능을 통해 스프링 기반 애플리케이션 개발을 더욱 쉽고 빠르게 만들어 준다. 이러한 원리 덕분에 복잡한 설정 없이도 강력한 기능을 손쉽게 구현할 수 있게 된다.
'Spring' 카테고리의 다른 글
Dispatchservlet이 Spring boot에서 controller로 이동하는 과정 (0) | 2025.02.25 |
---|---|
Spring boot 버전 정리 (2) | 2024.12.02 |
동시성 제어 (낙관적 락, 비관적 락, 분산 락) (0) | 2024.10.19 |
Transactional 관심사의 분리를 통해 로그 기록 남기기 (0) | 2024.10.08 |
단위테스트, 통합테스트 (1) | 2024.10.01 |