본문 바로가기

Backend study/Spring Boot

Spring boot란?

Spring Boot는 Spring Framework를 기반으로 한 애플리케이션 개발 플랫폼으로, 기존 Spring 애플리케이션 설정의 복잡함을 대폭 줄이고 더 빠르게 애플리케이션을 만들 수 있도록 돕는 도구이다. Spring Boot는 "Convention over Configuration" 철학을 따르며, 기본적인 설정을 미리 제공해 개발자가 코딩에만 집중할 수 있게 해줍니다. 주요 기능과 특징은 다음과 같다.

 

1. 자동 설정 (Auto Configuration)

Spring Boot는 애플리케이션에 필요한 대부분의 설정을 자동으로 구성한다. 개발자가 복잡한 XML 설정 파일을 작성할 필요 없이, 필요한 의존성을 추가하면 Spring Boot가 자동으로 그에 맞는 빈(bean)과 설정을 생성해준다.

예를 들어, spring-boot-starter-web 의존성을 추가하면 자동으로 Spring MVC 관련 설정이 완료되고, 웹 애플리케이션 서버(Tomcat)도 기본 내장된다.

 

2. 스타터 의존성 (Starter Dependencies)

Spring Boot는 일반적으로 사용되는 여러 기술 스택에 대해 미리 설정된 의존성 모음을 제공하는 "Starter"를 지원한다. 예를 들어, 다음과 같은 스타터 의존성이 있다:

  • spring-boot-starter-web: Spring MVC로 웹 애플리케이션을 개발할 때 사용.
  • spring-boot-starter-data-jpa: JPA를 사용해 데이터베이스와 통신할 때 필요한 기본 설정 제공.
  • spring-boot-starter-security: Spring Security 설정 제공.

이러한 스타터는 관련 라이브러리와 설정을 자동으로 포함해 개발자가 쉽게 특정 기능을 사용할 수 있도록 도와준다.

 

3. 내장 웹 서버 (Embedded Web Server)

Spring Boot는 Tomcat, Jetty, Undertow 같은 웹 서버를 내장하고 있어, 별도의 외부 서버 없이 바로 애플리케이션을 실행할 수 있다. 이로 인해 jar 파일로 패키징된 후에도 웹 서버와 함께 실행 가능하여, 애플리케이션 배포가 매우 간편해진다.

 

 

4. Spring Initializr와의 통합

Spring Boot는 Spring Initializr라는 웹 도구와 통합되어, 개발자가 필요한 의존성만 선택해 프로젝트를 빠르게 생성할 수 있도록 지원한다. Maven이나 Gradle을 사용해 Spring Boot 프로젝트 구조를 쉽게 설정할 수 있으며, 이를 통해 프로젝트 시작 단계에서부터 빠르게 개발을 진행할 수 있다.

 

5. 운영 모니터링 및 관리 도구 (Actuator)

Spring Boot에는 Actuator라는 모니터링 및 관리 기능이 내장되어 있다. Actuator는 애플리케이션의 상태, 메트릭스, 환경 정보 등을 HTTP 엔드포인트로 제공해 운영 환경에서 애플리케이션을 더 쉽게 모니터링하고 관리할 수 있게 해준다.

대표적인 Actuator 엔드포인트는 다음과 같다:

  • /actuator/health: 애플리케이션의 상태를 보여줌.
  • /actuator/metrics: 애플리케이션의 성능 메트릭스를 제공.

 

6. 간편한 설정 및 실행

Spring Boot는 application.properties 또는 application.yml 파일을 통해 간단한 설정을 할 수 있다. 이 파일을 통해 데이터베이스 연결 정보, 서버 포트, 로그 설정 등을 관리할 수 있다.

예시:

server.port=8081 
spring.datasource.url=jdbc:mysql://localhost:3306/mydb 
spring.datasource.username=root 
spring.datasource.password=pass
 

 

7. 테스트 기능 강화

Spring Boot는 Spring Test를 기반으로 다양한 테스트 기능을 제공하며, @SpringBootTest 등의 어노테이션을 사용해 애플리케이션 전체 또는 특정 계층을 테스트할 수 있는 환경을 제공한다.

@SpringBootTest public class MyApplicationTests {
	@Test 
    void contextLoads() {
    } 
 }

 

8. 마이크로서비스와 클라우드 네이티브 지원

Spring Boot는 Spring Cloud와 긴밀하게 연동되어 마이크로서비스 아키텍처 개발에 적합하다. Eureka, Config Server, API Gateway 등과 같은 클라우드 기반 도구를 쉽게 통합할 수 있어, 마이크로서비스를 쉽게 구축하고 확장할 수 있다.

 

Spring Boot의 주요 장점

  • 빠른 개발: 자동 설정과 스타터 의존성 덕분에 개발 속도가 매우 빠르다.
  • 간편한 배포: 내장 서버 덕분에 외부 설정 없이 jar 파일로 배포가 간편하다.
  • 강력한 커뮤니티 지원: Spring 생태계의 방대한 지원을 받으며, 다양한 문서와 예제가 제공된다.
  • 확장성: 다양한 스타터 의존성, Spring Cloud와의 연동 등을 통해 대규모 애플리케이션에도 적합하다.

이러한 이유들로 인해 Spring Boot는 현재 자바 기반 백엔드 개발에서 매우 인기가 높다.

728x90

'Backend study > Spring Boot' 카테고리의 다른 글

Spring boot 시작하기  (5) 2024.09.27