[Java/Spring 기초] 헷갈리는 용어 정리: POJO, Java Bean, Spring Bean이 대체 뭘까?

시에나·2026년 1월 9일

스프링 기초

목록 보기
4/13
post-thumbnail

Java와 Spring을 공부하다 보면 POJO, Java Bean, Spring Bean이라는 용어가 자주 등장합니다. 비슷해 보이지만 미묘하게 다른 이 세 가지 개념, 오늘 확실하게 정리해봅시다.

1. POJO (Plain Old Java Object)

"그냥 평범한 자바 객체"

POJO는 말 그대로 '오래된 방식의 평범한 자바 객체'를 의미합니다. 특정 기술이나 프레임워크에 종속되지 않고, Java 언어 사양 외에 어떠한 제약 조건도 없는 객체를 말합니다.

코드 예시:

class Pojo {
    private String text;
    private int number;
    
    public String toString() {
        return text + ":" + number;
    }
}
  • 위 코드처럼 특별한 상속(extends)이나 인터페이스 구현(implements) 없이 만든 클래스가 바로 POJO입니다.
  • 우리가 Java를 배우면서 만드는 대부분의 객체는 POJO입니다. 가장 넓은 범위의 개념이라고 보시면 됩니다.

2. Java Bean (자바 빈)

"엄격한 규칙을 지키는 객체"

Java Bean은 POJO보다 훨씬 더 까다로운 3가지 제약 조건을 지켜야 하는 객체입니다. 과거 EJB(Enterprise Java Bean) 시절에 주로 사용되던 개념으로, 데이터를 저장하고 전송하기 위해 만들어진 표준 규약입니다.

Java Bean이 되기 위한 3가지 조건:

  1. 기본 생성자(No-arg Constructor) 필수: 인자가 없는 public 생성자가 있어야 합니다.
  2. Getter/Setter 메서드: 멤버 변수(필드)는 private이어야 하며, 접근을 위한 Getter/Setter 메서드가 있어야 합니다.
  3. Serializable 구현: java.io.Serializable 인터페이스를 구현해야 합니다.

코드 예시:

import java.io.Serializable;

class JavaBean implements Serializable { // 조건 3: Serializable 구현

    // 조건 1: public no-arg 생성자
    public JavaBean() {
    }

    private String text;
    private int number;

    // 조건 2: Getters and Setters
    public void setNumber(int number) {
        this.number = number;
    }

    public int getNumber() {
        return number;
    }
    
    public void setText(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }
}
  • 참고: 요즘은 EJB를 잘 쓰지 않기 때문에 엄격한 의미의 Java Bean을 직접 구현하는 일은 줄어들었지만, 이 규약(기본 생성자, Getter/Setter)은 여전히 많은 프레임워크에서 관례적으로 사용됩니다.

3. Spring Bean (스프링 빈)

"Spring이 관리해 주는 객체"

Spring Bean의 정의는 아주 간단합니다. Spring 컨테이너(IoC 컨테이너)가 생성하고, 관리하는 모든 객체를 Spring Bean이라고 부릅니다.

  • 개발자가 new 연산자로 직접 생성하는 것이 아니라, Spring에게 "이거 관리해 줘"라고 맡긴 객체들입니다.
  • Spring Bean도 기본적으로는 POJO입니다. (POJO를 Spring 컨테이너에 등록하면 Spring Bean이 되는 것이죠!)

한눈에 보는 요약

용어핵심 설명특징
POJO평범한 자바 객체제약 없음. 모든 자바 객체의 기본 형태.
---
Java Bean규약을 지키는 객체1. 기본 생성자

2. Getter/Setter

3. Serializable 구현
---
Spring BeanSpring이 관리하는 객체Spring IoC 컨테이너에 의해 생성되고 관리됨.

요약

  • 여러분이 만드는 대부분의 클래스는 POJO입니다.
  • 그중 특정 규칙을 지키면 Java Bean이 됩니다.
  • 그 POJO를 Spring 프레임워크가 관리하게 만들면 Spring Bean이 됩니다.

0개의 댓글