순수 스프링은 강력하지만 설정이 번거로웠어요. Spring Boot는 그 설정을 자동화해서 "바로 실행되는" 스프링을 만들어줘요. 이번 장은 자동 설정·스타터·내장 서버·설정 파일이라는 네 가지 열쇠를 잡습니다.
순수 Spring Framework는 강력하지만, 프로젝트를 하나 시작하려면 설정이 번거로웠어요. XML 설정 파일을 잔뜩 쓰고, 라이브러리(의존성) 버전을 서로 맞추고, 웹 서버를 따로 설치·연동하는 등 "돌아가게 만들기까지"의 준비 작업이 많았어요.
| 구분 | Spring Framework (순수 스프링) | Spring Boot |
|---|---|---|
| 설정 | XML·자바 설정을 직접 다 작성 | 자동 설정(Auto-Configuration)이 기본값을 채워줌 |
| 의존성 | 라이브러리·버전을 하나하나 맞춰 추가 | 스타터(Starter) 한 줄로 묶음 추가 |
| 웹 서버 | 외부 톰캣에 war로 배포 | 내장 톰캣 포함, jar 하나로 실행 |
| 실행 | 서버에 배포 후 구동 | java -jar 한 줄이면 바로 실행 |
| 시작까지 | 준비할 게 많아 느림 | 거의 바로 개발 시작 |
| 둘의 관계 | IoC/DI·AOP 등 핵심 기반(뿌리) | 그 프레임워크를 "쉽게 쓰게" 감싼 것 |
Spring Boot는 클래스패스에 어떤 라이브러리가 있는지를 보고, 합리적인 기본 설정을 자동으로 해줘요. 예를 들어 웹 라이브러리가 있으면 "아, 웹 서버가 필요하겠네" 하고 알아서 준비해요. 덕분에 개발자가 직접 쓰는 설정이 최소화돼요.
SpringApplication.run(...) 을 호출하면 스프링 애플리케이션이 실행돼요.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // 자동설정 + 컴포넌트스캔 + 설정을 한 번에
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args); // 여기서 앱이 실행!
}
}
💡 @SpringBootApplication 은 사실 @EnableAutoConfiguration(자동 설정) + @ComponentScan(컴포넌트 스캔) + @SpringBootConfiguration(설정) 을 합쳐 놓은 편의 어노테이션이에요.
기능 하나를 쓰려면 원래는 여러 라이브러리를 버전을 맞춰가며 일일이 추가해야 했어요. Spring Boot의 스타터(Starter)는 관련 라이브러리를 묶음으로 제공해서, 버전 충돌 걱정 없이 한 줄로 추가할 수 있어요.
| 스타터 | 무엇을 묶어주나 |
|---|---|
| spring-boot-starter-web | 웹(REST/MVC) 개발에 필요한 것들 + 내장 톰캣까지 묶음. |
| spring-boot-starter-data-jpa | JPA로 데이터베이스 접근에 필요한 라이브러리 묶음. (CH 08) |
| spring-boot-starter-security | 인증·인가(로그인·권한)에 필요한 묶음. |
| spring-boot-starter-test | 테스트에 필요한 라이브러리 묶음. |
spring-boot-starter-web 하나만 추가하면 돼요. (Gradle 예시)
// build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
이 한 줄에 톰캣·JSON 처리·검증 등 웹에 필요한 것들이 버전까지 맞춰서 딸려 와요.
예전에는 웹 애플리케이션을 배포하려면 톰캣 같은 웹 서버를 따로 설치하고, 만든 파일을 그 서버에 올리는 과정이 필요했어요. Spring Boot는 톰캣 같은 웹 서버가 내장돼 있어서, 별도 서버 설치·배포 없이 실행 파일(jar) 하나만으로 바로 서버가 떠요.
.jar 파일 하나이고, 여기에 우리 앱과 내장 톰캣이 함께 담겨 있어서 그 파일만으로 서버가 떠요.java -jar 로 실행하면 내장 톰캣이 켜지고 서버가 바로 동작해요.
// 빌드된 실행 파일을 그대로 실행
// (별도 톰캣 설치·배포 불필요)
java -jar myapp.jar
💡 그래서 Spring Boot 앱은 배포·이식이 간단해요. jar 파일만 있으면 자바가 설치된 어디서든 java -jar 로 실행돼요.
자동 설정이 대부분을 처리하지만, 포트 번호·DB 접속 정보처럼 우리가 정하고 싶은 값은 한 곳에서 관리해요. 그 파일이 application.properties (또는 application.yml) 예요. 여기에 적으면 자동 설정의 기본값을 덮어쓸 수 있어요.
.properties는 키=값 형식, .yml은 들여쓰기(계층) 형식으로, 같은 내용을 표현하는 두 가지 방식일 뿐이니 취향대로 하나만 골라 쓰면 돼요.server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root
application.yml 은 들여쓰기로 계층을 표현해요. 취향에 따라 골라 쓰면 돼요.
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
💡 server.port=8080 은 "내장 서버를 8080 포트로 열어라"는 뜻이에요. 안 적으면 기본값(8080)이 자동 적용돼요.
SpringApplication.run(...) 으로 실행해요.spring-boot-starter-web.java -jar 로 jar 하나가 바로 서버가 돼요.