◇ PART · SPRING

클래스 vs 인스턴스

Java와 Spring의 철학 — 읽기 자료

📍 지금 어디를 만지고 있나요?
브라우저
Tomcat
JVM 메모리
Controller
DB

이 차시의 핵심 용어

클래스 (Class)객체를 만들기 위한 설계도. 어떤 데이터(필드)와 동작(메서드)을 가지는지 정의.
인스턴스 (Instance)클래스라는 설계도로 실제 만들어진 「객체」. new 키워드로 생성. 각자 독립된 메모리.
필드 (Field)인스턴스가 가지는 데이터. 인스턴스마다 값이 다를 수 있음.
생성자 (Constructor)인스턴스를 만들 때 호출되는 특별한 메서드. new ClassName(...)(...) 부분.

1. 두 단어의 관계

학생들이 자주 헷갈리는 두 단어 — 클래스와 인스턴스. 사실 비유 한 가지로 끝납니다.

설계도와 제품

클래스는 「아이폰의 설계 도면」, 인스턴스는 그 도면으로 찍어낸 「내 폰·친구 폰」. 설계 도면 한 장으로 폰 수억 개를 만들 수 있고, 각 폰은 독립된 물건이죠.

2. 코드로 보기

클래스 정의 — 설계도 작성

class User {
    String name;
    int age;

    User(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

인스턴스 생성 — 설계도로 제품 찍기

User u1 = new User("Alice", 25);   // 인스턴스 1
User u2 = new User("Bob", 30);     // 인스턴스 2
User u3 = new User("Carol", 28);   // 인스턴스 3

3. 메모리 그림

클래스 (설계도) — JVM 의 메서드 영역에 한 번만 적재 └── User 의 필드 정의: name, age 인스턴스 (제품) — 힙(Heap) 메모리에 각각 별도로 u1 → [name="Alice", age=25] u2 → [name="Bob", age=30] u3 → [name="Carol", age=28]

각 인스턴스는 자기만의 데이터를 가집니다. u1.name 을 바꿔도 u2.name 에는 아무 영향이 없습니다.

4. 왜 Spring 에서 중요한가

Spring 의 거의 모든 객체는 인스턴스

Spring 컨테이너는 우리가 정의한 클래스를 보고, 인스턴스를 「자동으로 한 개 만들어서 보관」하는 역할을 합니다. Bean 이라는 게 결국 「Spring 이 관리하는 인스턴스」입니다. 다음 차시들에서 자세히 다룹니다.

5. Before / After

전 차시 끝

인자 전달 규칙은 안다. 객체가 어떻게 만들어지는지는 모름.

이번 차시 끝

클래스 1 개 ↔ 인스턴스 N 개의 관계를 안다. 각 인스턴스가 독립된 메모리를 가진다.