POJO(Plain Old Java Object)
POJO 는 EJB 처럼 복잡하지 않고, 단순히 객체 만을 이용해 비즈니스 로직을 구현하는 것이다. POJO는 OOP에 충실하면서 환경, 기술에 종속되지 않고, 필요에 따라 재사용할 수 있는 방식으로 설계된 객체이다.
Java bean
자바 빈은 스윙에서 독립적인 GUI 컴포넌트의 개발을 용이하게 하기 위해 고안되었다. 자바 빈은 하나의 객체 내에 여러 객체들이 존재하는 형태이며, 다음과 같은 조건을 만족한다.
1. Serializable를 implements 하고 있어야 한다. 즉, 직렬화할 수 있어야 한다.
2. 디폴트 생성자가 존재해야 한다.
3. 자바 빈에 존재하는 모든 프로퍼티(멤버 변수)들은 private 이여야 하며 각 getter와 setter가 public 이어야 한다.
즉, getter와 setter를 통해 접근해야 한다.
Java bean의 장단점
자바 빈의 사용은 다음과 같은 장단점을 가지고 있다.
장점:
1. 프로퍼티, 이벤트, 메서드들을 재사용할 수 있다.
2. 이벤트 등록
3. HDD와 같은 persistent storage에 저장할 수 있다.
단점:
1. 디폴트 생성자은 올바른 초기화를 보장하지 못한다.
2. 자바 빈은 multable이다.
3. getter와 setter 같은 보일러 플레이트가 존재한다.
Spring Bean
스프링 빈은 스프링 IOC 컨테이너가 관리하는 객체이며 BeanDefinition에 의해 생성된다. BeanDefinition은 빈의 프로퍼티들을 나타내며 다음과 같은 메타 데이터를 포함한다.
1. 클래스 이름
2. 빈의 동작 구성: 스코프, 라이프 사이클 콜백, 등
3. 빈이 협력하는 객체, 의존성
4. 기타 설정
BeanDefinition properties
1. class
2. name
3. scope
4. constructor arguments
5. properties
6. autowiring mode
7. lazy-initialization mode
8. initialization method
9. desctruction method
자세한 설명은 아래 링크를 참고하자.
Java Bean vs Spring bean
1. 스프링 빈은 스프링 IoC 컨테이너에 의해 관리되지만 자바 빈은 그렇지 않다.
2. 자바 빈은 반드시 직렬화를 지원해야 하지만, 스프링 빈은 반드시 지원하지 않아도 된다.
3. 스프링 빈은 디폴트 생성자가 없어도 된다.
4. 자바 객체는 동시에 자바 빈 이며 POJO이고, 스프링 빈이 될 수 있다.