Java와 Spring을 공부하다 보면 POJO, Java Bean, Spring Bean이라는 용어가 자주 등장합니다. 비슷해 보이지만 미묘하게 다른 이 세 가지 개념, 오늘 확실하게 정리해봅시다.
"그냥 평범한 자바 객체"
POJO는 말 그대로 '오래된 방식의 평범한 자바 객체'를 의미합니다. 특정 기술이나 프레임워크에 종속되지 않고, Java 언어 사양 외에 어떠한 제약 조건도 없는 객체를 말합니다.
코드 예시:
class Pojo {
private String text;
private int number;
public String toString() {
return text + ":" + number;
}
}
"엄격한 규칙을 지키는 객체"
Java Bean은 POJO보다 훨씬 더 까다로운 3가지 제약 조건을 지켜야 하는 객체입니다. 과거 EJB(Enterprise Java Bean) 시절에 주로 사용되던 개념으로, 데이터를 저장하고 전송하기 위해 만들어진 표준 규약입니다.
Java Bean이 되기 위한 3가지 조건:
public 생성자가 있어야 합니다.private이어야 하며, 접근을 위한 Getter/Setter 메서드가 있어야 합니다.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;
}
}
"Spring이 관리해 주는 객체"
Spring Bean의 정의는 아주 간단합니다. Spring 컨테이너(IoC 컨테이너)가 생성하고, 관리하는 모든 객체를 Spring Bean이라고 부릅니다.
new 연산자로 직접 생성하는 것이 아니라, Spring에게 "이거 관리해 줘"라고 맡긴 객체들입니다.| 용어 | 핵심 설명 | 특징 |
|---|---|---|
| POJO | 평범한 자바 객체 | 제약 없음. 모든 자바 객체의 기본 형태. |
| --- | ||
| Java Bean | 규약을 지키는 객체 | 1. 기본 생성자 2. Getter/Setter 3. Serializable 구현 |
| --- | ||
| Spring Bean | Spring이 관리하는 객체 | Spring IoC 컨테이너에 의해 생성되고 관리됨. |