Spring Boot는 Spring으로 작성된 단독 실행 가능한 애플리케이션을 개발하기 위한 플랫폼. 간단하게 개발 및 실행이 가능하고 상용화 가능한 수준의 스프링 기반 애플리케이션을 쉽게 만들어낼 수 있다는 장점을 가짐.
기본적으로 Spring Framework를 이용한 애플리케이션 개발에는 많은 설정 작업들이 필요한데 Spring Boot를 이용하면 최소한의 설정만으로 Spring의 플랫폼과 서드파티(Third Party), 라이브러리 등을 사용할 수 있게 됨.
spring.io에서는 Spring Boot에 대해 아래와 같이 설명함.
Spring 기반의 '단독 실행 가능한' 애플리케이션을 간단하게 생성할 수 있고, 대부분의 Spring Boot 애플리케이션은 최소한의 설정 작업만으로도 바로 실행할 수 있다.
단독 실행형 애플리케이션을 생성한다는 것의 의미는 Spring Boot 안에 일반적으로 Java 진영에서 많이 사용되고 있는 WAS(Web Application Server), 그중에서도 Tomcat이 내장형으로 탑재되어 있다는 것. Tomcat 외에도 Jetty나 Undertow를 내장하고 있기 때문에 실행을 위해 별도의 서버를 설치할 필요가 없고 기본적인 Spring 애플리케이션을 실행하는 것만으로도 웹 애플리케이션을 실행할 수 있게 됨.
물론 Spring Boot 애플리케이션은 Spring MVC 애플리케이션과 마찬가지로 war 파일 형태로 패키징하고 별도의 WAS에 배포할 수 있음. Spring Boot의 가장 큰 특징 중 하나가 Spring Framework 실행에 필요한 많은 API들을 starter라고 하는 컴포넌트를 통해 제공한다는 것.
또한 Spring Framework의 실행에 필요한 다양한 설정 작업 역시 Auto Configuration이라는 자동 설정 기능을 사용 가능함. 기존 Spring 애플리케이션은 IOC, AOP 작업을 위해 별도 XML 파일에 설정을 추가하거나 Annotation 작업을 해 왔는데 이러한 과정이 필요 없어지는 것. 따라서 개발자는 비즈니스 로직을 개발하는 데 시간을 투자하거나 집중할 수 있게 됨.
Spring Boot 프로젝트는 https://start.spring.io/에서 간단히 만들 수 있고 여기서는 개발에 필요한 템플릿 설정도 가능함.이렇게 생성된 프로젝트 파일을 다운로드 후 IDE에서 불러와 사용할 수 있음. 물론 Eclipse, IntelliJ를 통해 생성하는 것도 가능.
이렇게 Spring Boot 애플리케이션을 실행하기 위해서는 Spring Boot Template에 의해 생성된 메인 클래스를 실행하면 됨. 메인 클래스는 @SpringBootApplication 이라는 어노테이션이 있어 다른 클래스와 구별할 수 있음.
먼저 실행되는 Spring Boot 애클리케이션에는 Auto Configuration이라는 기능을 통해 개발하고자 하는 프로젝트에 필요한 각종 설정 작업을 자동으로 할 수 있고 필요에 따라서는 개발자가 등록하는 환경을 찾아 읽어 오기도 함.
또한 Component Scan이라는 과정을 통해 프로젝트에 선언된 각종 컴포넌트들을 읽어 오게 됨. Spring Framework에서는 사용 용도에 따라 Service, Repository, Controller 등으로 구분되는 여러 클래스 유형들이 존재하는데, 이러한 클래스의 인스턴스를 Spring Container의 메모리로 읽어와 애플리케이션에서 사용할 수 있는 형태의 객체인 Bean 타입으로 등록함. Spring Application에서는 개발자가 프로그래밍에 의해 클래스의 인스턴스를 직접 생성하는 것이 아니라, Spring Container에 의해 인스턴스가 미리 생성되고 개발자는 이렇게 생성된 인스턴스를 호출해서 사용하게 됨. 이처럼 Container에 의해 클래스의 인스턴스들이 관리되는 방식을 제어의 역전(IoC, Inversion of Control)이라고 함.
출처
본 포스트는 인프런 이도원 강사님의 "Spring Boot 3.x 를 이용한 RESTful Web Services 개발" 강의를 통해 직접 작성 및 정리한 글입니다.
'Java > Spring' 카테고리의 다른 글
[Spring Boot] Spring Boot 프로젝트의 구조와 실행 방법 (1) | 2024.08.30 |
---|---|
Restful API 설계 (2) | 2024.08.28 |
Open API (1) | 2024.08.23 |
SOAP과 REST (1) | 2024.08.22 |
Web Service와 Web Application (0) | 2024.08.21 |