정지용
기술스택 목록
프레임워크

Spring Boot

프로젝트 2에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

설정보다 관례를 앞세워 자바 애플리케이션을 빠르게 만들고 실행하는 프레임워크

Spring Boot는 Spring 프레임워크를 기반으로, 복잡한 XML 설정과 의존성 구성을 최소화하고 곧바로 실행 가능한 애플리케이션을 만들 수 있게 해주는 프레임워크다. 내장 웹서버(Tomcat 등)를 포함해 별도 배포 서버 없이 독립 실행형(jar)으로 구동할 수 있으며, 자동 설정(Auto Configuration)을 통해 클래스패스에 있는 라이브러리를 감지해 필요한 빈(Bean)을 알아서 등록해준다. 원래 Spring은 강력하지만 초기 설정이 번거롭다는 진입장벽이 있었는데, Spring Boot는 이를 없애 개발자가 비즈니스 로직에 집중할 수 있도록 만들어졌다.

이럴 때 사용합니다

  • REST API나 백엔드 서비스를 빠르게 구축하고 바로 실행해야 할 때
  • 메시징 시스템, DB 등 외부 인프라와 연동하는 이벤트 기반 서비스를 만들 때
  • 설정 코드를 최소화하고 검증된 관례를 따라 개발 생산성을 높이고 싶을 때
  • 독립 실행형 jar로 배포해 컨테이너 환경에서 운영하고 싶을 때

핵심 개념

Auto Configuration
클래스패스에 있는 라이브러리와 설정을 분석해 필요한 빈을 자동으로 구성해주는 기능이다. 개발자가 직접 설정 코드를 작성하지 않아도 기본 동작이 준비된다.
Starter Dependency
특정 기능(웹, DB, 메시징 등)에 필요한 라이브러리들을 하나의 묶음으로 제공하는 의존성이다. 버전 호환성 고민 없이 필요한 스타터만 추가하면 된다.
Dependency Injection (DI)
객체가 필요로 하는 의존 객체를 프레임워크가 직접 생성해 주입해주는 방식이다. 컴포넌트 간 결합도를 낮추고 테스트를 쉽게 만든다.
Embedded Server
Tomcat, Jetty 같은 웹서버를 애플리케이션 내부에 포함시켜, 별도 서버 설치 없이 jar 실행만으로 서비스를 띄우는 방식이다.
Bean
Spring 컨테이너가 생성하고 관리하는 객체를 의미한다. 애노테이션이나 설정을 통해 컨테이너에 등록되고 필요한 곳에 주입된다.
Application Properties
포트, DB 접속 정보 등 애플리케이션 동작을 환경별로 다르게 설정할 수 있는 외부화된 설정 파일 체계다.

간단한 REST 컨트롤러

애플리케이션을 실행하면 내장 웹서버가 뜨고, /hello 요청에 문자열을 응답하는 최소 예시다.

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

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

처음 쓸 때 흔한 함정

  • 자동 설정이 편리한 만큼 내부적으로 어떤 빈이 등록되는지 모르면 문제 진단이 어려워진다
  • 필요 없는 스타터까지 추가하면 애플리케이션이 무겁고 구동이 느려질 수 있다
  • 설정 파일과 프로파일(dev/prod 등)을 분리하지 않으면 환경별 값이 뒤섞일 수 있다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.