티스토리 뷰

☠️ Java

스프링 부트(Spring Boot)

James Wetzel 2024. 11. 6. 19:55
728x90
반응형

스프링 부트(Spring Boot)란?

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".

 

스프링 부트는 Spring을 기반으로 한 애플리케이션을 쉽게 개발할 수 있게 도와준다.

스프링 부트가 존재하기 이전에는 Spring을 기반으로한 애플리케이션을 개발하기 위해서 복잡한 의존성에 대한 설정과 그에 수반하는

많은 응용 프로그램들을 추가로 설치 해야만 했다.

 

스프링 부트는 이러한 모든 복잡한 과정을 간소화했다.(just run.!!!) 

 

스프링 툴(Spring Tools4)란?

Spring Tools 4 is the next generation of Spring tooling for your favorite coding environment.

 

스프링 툴은 "스프링 부트(Spring Boot)"를 이용한 프로젝트 생성 및 Spring 개발에 특화된 기능들을 제공하여,

생산성을 크게 높여줍니다. 

 

 

스프링 부트

https://spring.io/projects/spring-boot#overview

 

Spring Boot

 

spring.io

 

 

스프링 툴(Spring Tools4)

https://spring.io/tools

 

Spring | Tools

 

spring.io

 

 

 

 

Spring Boot는 Spring Framework를 기반으로 한 오픈 소스 자바 프레임워크로, 복잡한 Spring 설정을 간소화하여 **빠르게 애플리케이션을 개발하고 배포**할 수 있도록 도와줍니다. Spring Boot는 Spring 생태계의 다른 구성 요소와 쉽게 통합되어 마이크로서비스, 웹 애플리케이션, REST API, CLI 애플리케이션 등 다양한 애플리케이션을 효율적으로 개발하는 데 사용됩니다.

### Spring Boot의 주요 특징

1. **자동 설정(Auto-Configuration)**
   - Spring Boot는 기본적인 Spring 설정을 자동으로 구성하여 개발자가 설정할 내용을 최소화합니다. 예를 들어, `spring-boot-starter-web` 의존성을 추가하면 Spring Boot는 자동으로 내장형 웹 서버를 설정하고 HTTP 요청을 처리할 수 있는 환경을 구성합니다.
   
2. **독립 실행형 애플리케이션**
   - Spring Boot는 내장된 Tomcat, Jetty, Undertow와 같은 웹 서버를 포함하여 애플리케이션을 독립적으로 실행할 수 있습니다. 덕분에 별도의 외부 서버 설정 없이 `java -jar` 명령어로 쉽게 실행할 수 있습니다.

3. **의존성 관리 및 Starters**
   - Spring Boot는 Spring 및 서드파티 라이브러리를 포함한 여러 모듈을 패키징한 **Starters**를 제공합니다. 예를 들어, `spring-boot-starter-web`은 웹 개발에 필요한 필수적인 의존성을 모두 포함해, 개발자가 개별 라이브러리를 수동으로 추가할 필요가 없습니다.

4. **Spring Boot Actuator**
   - Actuator는 애플리케이션 모니터링 및 관리 기능을 제공하며, 애플리케이션 상태 점검, 메트릭 수집, 정보 노출 등을 가능하게 합니다. 개발자는 `/actuator` 엔드포인트를 통해 애플리케이션 상태와 성능을 쉽게 확인할 수 있습니다.

5. **간단한 설정 파일**
   - `application.properties` 또는 `application.yml` 파일을 사용해 애플리케이션의 설정을 관리합니다. 이 파일은 데이터베이스 연결, 포트 번호, 로깅 수준 등 다양한 애플리케이션 설정을 간편하게 정의하는 데 사용됩니다.

6. **테스트 지원**
   - Spring Boot는 테스트 자동화 기능을 내장하고 있어, `@SpringBootTest` 등의 어노테이션을 통해 통합 테스트를 쉽게 작성하고 실행할 수 있도록 지원합니다.

### Spring Boot의 주요 구성 요소

1. **Starter POMs**
   - 다양한 스타터(Starter) 패키지로 자주 사용되는 기능들을 모듈화하여 필요에 맞는 의존성을 쉽게 추가할 수 있도록 합니다. 예를 들어, 웹 애플리케이션 개발에 필요한 `spring-boot-starter-web`, JPA를 위한 `spring-boot-starter-data-jpa` 등이 있습니다.

2. **Spring Boot CLI**
   - Spring Boot CLI(Command Line Interface)는 스크립트로 빠르게 Spring 애플리케이션을 작성하고 실행할 수 있는 도구로, 특히 프로토타이핑과 테스트에 유용합니다.

3. **Actuator**
   - Spring Boot Actuator는 애플리케이션의 상태를 모니터링하고 관리할 수 있는 엔드포인트를 제공합니다. `health`, `metrics`, `info` 등의 엔드포인트를 통해 서비스 상태 점검 및 분석이 가능합니다.

4. **Spring Initializr**
   - [Spring Initializr](https://start.spring.io/)는 Spring Boot 프로젝트를 쉽게 시작할 수 있는 웹 도구로, 필요한 스타터 의존성 및 설정을 선택하여 프로젝트 구조를 빠르게 생성할 수 있습니다.

### Spring Boot 애플리케이션 예제

간단한 REST API 애플리케이션 예제입니다.

```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@RestController
class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}
```

- `@SpringBootApplication`: Spring Boot 애플리케이션의 시작점으로, 자동 구성과 컴포넌트 스캔을 활성화합니다.
- `@RestController`: RESTful 웹 컨트롤러를 나타내며, HTTP 요청을 처리합니다.
- `@GetMapping`: `/hello` URL로 들어오는 HTTP GET 요청을 처리합니다.

### 요약
Spring Boot는 빠르게 애플리케이션을 개발하고, 설정을 자동화하며, 독립적으로 실행 가능한 Spring 기반 애플리케이션을 만드는데 최적화된 프레임워크입니다. 자동 설정과 간소화된 의존성 관리 덕분에, 개발자는 비즈니스 로직에 집중할 수 있으며, 특히 마이크로서비스 아키텍처와 RESTful API 개발에 유리한 환경을 제공합니다.

728x90
반응형