✅ POJO(Plain Old Java Object)란?
POJO는 Plain Old Java Object의 약어로, 일반적인 Java 객체를 의미합니다. POJO는 특정한 프레임워크나 라이브러리에 종속되지 않고, 순수한 Java 클래스로 작성된 객체를 말합니다.
➡️ POJO는 다음과 같은 특징을 가지고 있습니다
- 자바 클래스 형태
POJO는 일반적인 자바 클래스로 작성되며, 특정한 인터페이스를 구현하거나 클래스를 상속받지 않습니다. 이는 POJO를 재사용 가능하고 독립적으로 사용할 수 있도록 합니다.
- 외부 의존성 최소화
POJO는 외부 프레임워크나 라이브러리에 대한 의존성을 최소화합니다. POJO 객체는 순수한 Java 객체로서, 특정한 프레임워크나 라이브러리에 종속되지 않고 독립적으로 동작할 수 있습니다.
- 기본적인 Java 기능 사용
POJO는 자바의 기본 기능과 API를 활용하여 구현됩니다. 예를 들어, 필드, 메서드, 생성자, 상속 등의 일반적인 자바 개념을 사용하여 객체를 정의하고 동작을 구현합니다.
✅ Bean이란?
Spring에서 Bean은 Spring IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체를 말합니다.
➡️ Bean은 다음과 같은 특징을 가지고 있습니다
- 관리되는 객체
Bean은 Spring IoC 컨테이너에 의해 생성, 관리, 소멸되는 객체입니다. 이를 통해 개발자는 객체의 생명주기와 의존성 주입을 Spring에게 위임할 수 있습니다.
- 설정 정보
Bean은 Spring IoC 컨테이너에 등록되는 객체로, 추가적인 설정 정보를 제공해야 합니다. 이를 위해 Spring은 다양한 방법을 제공합니다. 예를 들어,
@Component
,@Service
,@Repository
,@Controller
와 같은 애노테이션을 사용하여 Bean으로 등록하거나 XML 설정 파일에 빈의 정의를 작성할 수 있습니다.
- 의존성 주입(Dependency Injection)
Bean은 Spring IoC 컨테이너로부터 필요한 의존 객체를 주입받을 수 있습니다. Spring은 자동화된 방식으로 의존성 주입을 수행하며,
@Autowired
어노테이션을 사용하여 필요한 의존성을 주입합니다. 또는 XML 설정 파일에서도 의존성을 설정할 수 있습니다.
- 스코프
Bean은 다양한 스코프를 가질 수 있습니다. 기본적으로 Spring은 싱글톤(Singleton) 스코프를 사용하여 한 개의 인스턴스만 생성하고 관리합니다. 그러나 다른 스코프인 프로토타입(Prototype), 요청(Request), 세션(Session), 어플리케이션(Application) 등의 스코프도 지원합니다.
⚖️POJO와 Bean의 차이
프레임워크 종속성 | 메타데이터 설정 | 생명주기 관리 | 의존성 주입 | |
---|---|---|---|---|
POJO | No | No | 개발자 | No |
Bean | Spring에 종속적 | @, XML 설정 필요 | 프레임워크 | Yes |
- 프레임워크 종속성
POJO는 특정한 프레임워크나 라이브러리에 종속되지 않는 일반적인 Java 객체를 의미합니다. 반면에 Bean은 Spring 프레임워크에서 관리되는 객체로, Spring의 IoC 컨테이너에 등록되고 관리됩니다. 즉, Bean은 Spring 프레임워크에 종속적인 개념입니다.
- 메타데이터와 설정
POJO는 일반적으로 추가적인 메타데이터나 설정이 필요하지 않습니다. 단순히 자바 클래스로 정의된 객체입니다. Bean은 Spring의 IoC 컨테이너에서 관리되기 위해 추가적인 메타데이터나 설정이 필요합니다. 예를 들어,
@Component
어노테이션과 같은 Spring 애노테이션을 사용하여 Bean으로 등록하거나 XML 설정 파일에서 빈 정의를 작성해야 합니다.
- 생명주기 관리
POJO는 일반적으로 개발자가 객체의 생명주기를 직접 관리합니다. 반면에 Bean은 Spring의 IoC 컨테이너에 의해 객체의 생성, 초기화, 소멸과 같은 생명주기가 관리됩니다. Spring은 빈의 초기화와 소멸에 필요한 콜백 메서드를 호출하여 빈의 상태를 관리합니다.
- 의존성 주입(Dependency Injection)
POJO는 기본적으로 의존성 주입(Dependency Injection)을 받지 않습니다. 의존성 주입은 객체 간의 의존 관계를 외부에서 설정하여 객체에 필요한 의존 객체를 주입하는 개념입니다. Bean은 Spring의 IoC 컨테이너에 의해 관리되므로 의존성 주입을 받을 수 있습니다. Spring은
@Autowired
어노테이션을 사용하여 의존성 주입을 수행하거나 XML 설정 파일에서 의존성을 설정할 수 있습니다.
👉POJO는 일반적인 Java 객체로서 프레임워크에 종속되지 않는 독립적인 객체를 의미하며, Bean은 Spring 프레임워크의 IoC 컨테이너에서 관리되는 객체로서 추가적인 메타데이터와 설정, 생명주기 관리, 의존성 주입 등의 기능을 제공받습니다. POJO의 개념이 확장되어 Bean 객체의 개념으로 사용된다고 할 수 있습니다.
Uploaded by N2T