[Spring Boot] 라이브러리 vs 프레임워크

📺 참조 강의
방구석코더 — Spring Boot 기초 강의 (2026.01.04~)  ·  유튜브 채널 바로가기
🔗 실습 코드 레포지토리
github.com/yeedawon/myblog  —  master 브랜치 / Java 100% / 17 commits

“Spring은 프레임워크야.” “Lombok은 라이브러리야.”

둘 다 “이미 제작해 둔 코드를 가져다 쓰는 것”인데, 왜 굳이 구분할까 의문이 들었습니다. 단순히 용어 차이가 아니라, 내 코드와 어떤 관계로 동작하는가가 완전히 다르기 때문임을 알게 되었습니다.


가장 쉬운 비유 — 요리

[ 라이브러리 ] [ 프레임워크 ] 요리 도구 식당(레시피 / 구축된 주방 시스템) 레시피(라이브러리)를 필요할 때 주방 규칙(프레임워크)이 이미 정해져 있음. 꺼내서 참고함. 내 역할(코드)은 규칙 안에서만 수행.

라이브러리 (Library)

정의

특정 기능을 수행하는 코드의 모음. 내 코드가 필요할 때 호출해서 사용한다. 말 그대로 라이브러리 “도서관”같이 꺼내다 쓰는 개념입니다.

특징

항목 내용
호출 주체 내 코드가 라이브러리를 호출
흐름 제어 내 코드가 전체 흐름을 결정
사용 방식 필요한 함수·클래스를 import 후 직접 호출
교체 가능성 비교적 자유롭게 교체 가능

Java 예시 — Lombok

import lombok.Getter;         // ← 라이브러리 import
import lombok.NoArgsConstructor;

@Getter                       // ← 내 코드가 라이브러리 기능을 '선택적으로' 사용
@NoArgsConstructor
public class Article {
    private Long id;
    private String title;
}

@Getter가 필요 없으면 그냥 안 쓰면 됩니다.
Lombok이 내 코드 실행 흐름을 건드리지 않습니다.

다른 대표적인 라이브러리들

라이브러리 언어 역할
Lombok Java 반복 코드 자동 생성
Jackson Java JSON ↔ Java 객체 변환
NumPy Python 수치 연산
pandas Python 데이터 처리
React JavaScript UI 컴포넌트 구성

프레임워크 (Framework)

정의

애플리케이션의 뼈대(골격). 내 코드가 프레임워크가 정한 규칙과 구조 안에서 동작합니다.

특징

항목 내용
호출 주체 프레임워크가 내 코드를 호출
흐름 제어 프레임워크가 전체 흐름을 결정
사용 방식 정해진 규칙(어노테이션, 클래스 상속 등)에 맞게 코드 작성
교체 가능성 어려움. 코드 전체가 프레임워크에 결합됨

Java 예시 — Spring Boot

@RestController                    // ← Spring이 이 클래스를 HTTP 처리용으로 인식
@RequestMapping("/api/articles")
public class ArticleController {

    @GetMapping("/{id}")           // ← Spring이 GET 요청이 오면 이 메서드를 '알아서 호출'
    public String getArticle(@PathVariable Long id) {
        return "article: " + id;
    }
}

getArticle() 메서드를 사용자가 직접 호출하지 않습니다
HTTP GET 요청이 들어오면 Spring이 알아서 찾아서 실행합니다.


// 내가 main()을 실행하면...
SpringApplication.run(YeedawonApplication.class, args);

// 이후 HTTP 요청이 오면 Spring이 알아서:
// 1. 어떤 Controller에 보낼지 판단
// 2. 해당 메서드를 직접 호출
// 3. 반환값을 HTTP 응답으로 변환
// → 이 모든 흐름을 내가 짜지 않았다 = 프레임워크

반면 Lombok은:

// @Getter를 붙였더니 getTitle() 메서드가 생긴다
// 하지만 Lombok이 내 코드 흐름을 바꾸지는 않는다 = 라이브러리

정리

💡 한 문장 요약
라이브러리는 내가 불러서 쓰는 도구이고, 프레임워크는 나를 불러서 쓰는 구조입니다
개념 핵심 문장
라이브러리 내 코드가 라이브러리를 호출한다
프레임워크 프레임워크가 내 코드를 호출한다
실제로는… 프레임워크(Spring Boot) 안에서 라이브러리(Lombok 등)를 함께 사용한다

Java만 1학년 때 공부한 입장에서 제가 호출하지도 않은 메소드가 자동으로 왜 사용이 되는가 궁금했었는데, 외부에서 GET/POST 등의 HTTP의 헤더 부분의 메소드로 요청이 들어오면, “프레임워크가 이를 인식”하면서 작동하는 방식임을 배우게 되었습니다.