개발(React | Java)/자바 기초 | 문법

📘 Spring Boot 입문 (1) 스프링(Spring) & 스프링부트(Spring Boot) 완전 이해 — 개념부터 첫 프로젝트까지

dev-parrot 2025. 12. 10. 18:21

백엔드 개발자가 되려면 반드시 알아야 하는 프레임워크가 스프링(Spring)입니다.
하지만 초보자는 "스프링이 뭔데?", "스프링부트는 또 뭐야?"라는 질문부터 막히게 됩니다.

이번 글은 스프링의 개념 → 스프링부트의 필요성 → 첫 프로젝트 구조까지
한 번에 이해할 수 있도록 구성했습니다.


📌 목차

  1. 스프링(Spring)이란?
  2. 스프링의 핵심 철학 (IoC, DI, AOP)
  3. 왜 스프링부트(Spring Boot)를 쓰는가?
  4. 스프링 부트 프로젝트 생성 방법
  5. 스프링 부트 프로젝트 구조 설명
  6. 실행 방법
  7. 대표 태그

1️⃣ 스프링(Spring)이란?

스프링은 Java 기반 웹 애플리케이션을 쉽게 만들 수 있게 돕는 프레임워크입니다.

✔ 객체지향 철학에 충실
✔ 유지보수 쉬움
✔ 확장성 뛰어남
✔ 대기업·스타트업 대부분 사용

백엔드 개발자는 거의 100% 스프링을 사용한다고 보면 됩니다.


2️⃣ 스프링의 핵심 철학 3가지

스프링이 왜 강력한지 이해하려면 아래 3가지 개념이 필요합니다.

✔ 1) IoC (제어의 역전)

객체 생성 흐름을 개발자가 직접 관리하지 않고
스프링 컨테이너가 대신 관리함.

➡ 복잡한 객체 관리 필요 없음 → 개발 편함


✔ 2) DI (의존성 주입)

클래스 내부에서 의존 객체를 직접 생성하는 대신
스프링이 객체를 주입해줌.

예 (안 좋은 코드):

OrderService service = new OrderService();

 

스프링 방식:

@Autowired
OrderService service;

 

➡ 강한 결합을 느슨하게 만들어 테스트·유지보수에 매우 유리


✔ 3) AOP (관점 지향 프로그래밍)

공통 기능(로그, 트랜잭션 등)을 모아서 관리하는 방식.

➡ 비즈니스 코드가 깔끔함
➡ 중복 코드 제거


3️⃣ 스프링부트(Spring Boot)가 필요한 이유

기존 스프링(Spring)은 사용하기가 너무 어려웠습니다.

문제점:

  • 복잡한 XML 설정
  • 많은 의존성 직접 추가
  • 서버 설정 복잡
  • 자동 설정 부족

➡ 스프링부트는 이 모든 문제를 해결하기 위해 등장했습니다.

✔ 스프링부트의 장점

  • 설정 자동화 (Auto Configuration)
  • Tomcat 서버 내장 → 바로 실행 가능
  • Starter 패키지로 의존성 자동 관리
  • 프로젝트 구조가 표준화되어 초보자도 쉽게 학습 가능

즉, 스프링부트는 스프링을 쉽고 빠르게 사용할 수 있는 스프링의 확장판입니다.


4️⃣ 스프링 부트 프로젝트 생성 방법

가장 쉬운 방법: Spring Initializr 사용

👉 https://start.spring.io/

필수 설정 예시

  • Project: Gradle 또는 Maven
  • Language: Java
  • Spring Boot: LTS 버전
  • Dependencies: Spring Web, Lombok (선택)

생성하면 ZIP 파일로 다운로드 → IntelliJ 또는 VS Code에서 열기.


5️⃣ 스프링 부트 프로젝트 구조 설명

프로젝트 생성 후 가장 중요한 구조는 아래와 같습니다:

src
 └─ main
     ├─ java
     │   └─ com.example.demo
     │        ├─ DemoApplication.java
     │        └─ controller
     │             └─ HelloController.java
     └─ resources
         ├─ application.properties
         └─ static/
         └─ templates/

 

각 폴더의 역할을 정리하면:

✔ DemoApplication.java

스프링부트의 시작점(Main) — 내장 톰캣을 실행함.

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

✔ controller 패키지

웹 요청을 처리하는 곳:

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

✔ resources/application.properties

설정 파일 (DB 설정, 로그 설정 등)


✔ static / templates

static → 이미지, css, js
templates → Thymleaf HTML 파일


6️⃣ 스프링 부트 실행 방법

IDE에서 DemoApplication.java 실행 → 자동으로 서버 실행:

Tomcat started on port 8080

브라우저에서 :

http://localhost:8080/hello

출력 :

Hello Spring!

➡ 첫 스프링 API 완성 🎉

 

📘 다음 글 예고

👉 Spring Boot 입문 (2) — Controller, Service, Repository 구조 완전 이해 (3계층 구조)