ParkJongin Blog

ParkJongin Blog

POJO란 무엇일까..?

POJO

스프링의 핵심이 POJO 프로그래밍이다. 스프링의 주요 기술인 IoC/DI, AOP와 PSA는 애플리케이션을 POJO로 개발할 수 있게 해주는 가능기술이라고 불린다.
POJO는 Plain Old Java Object의 약자로 Martin Fowler가 컨퍼런스 발표를 준비하다가 만들어낸 용어라고 한다.
POJO는 그냥 순수 자바 오브젝트이다. 이를 위해서는 몇 가지 조건이 있다.

  • 특정 규약에 종속되지 않는다. POJO는 자바언어와 꼭 필요한 API 외에는 종속되지 않아야 한다. 별다른 가치를 주지도 못하는 규약 따위에 종속되지 않아야 하고, 객체지향 설계의 자유로운 적용이 가능한 오브젝트여야만 POJO라고 불릴 수 있다.
  • 특정 환경에 종속되지 않는다. 특정 환경에 종속적이어야만 동작하는 오브젝트도 POJO라고 볼 수 없다. 특정 환경이 의존 대상 검색에 종속적이면 POJO라고 할 수 없다. 예를 들면 어떤 특정 서버에서만 동작하는 API를 직접 쓴 코드를 갖고 있거나 특정 OS에서 제공하는 기능을 직접 호출하도록 만들어진 오브젝트와 같은 케이스다.
    하지만 특정 기술규약과 환경에 종속되지 않다고 모두 POJO라고 말할 수도 없다.
    진정한 POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다. 그런 POJO에 애플리케이션의 핵심 로직과 기능을 담아 설계하고 개발하는 방법을 POJO프로그래밍이라고 할 수 있다.

스프링에서는 POJO프로그래밍을 DI, IoC, AOP, PSA를 이용하여 가능하게 했다. PSA는 서비스 추상화 인데 이것은 DI를 통해 가능하다.

마치며…

이 글은 토비의 스프링 3.0을 공부하면서 적은 글 입니다.
아직은 부족함이 많은 글 입니다. 부족한 점, 더 채워나가고 공부해야겠습니다.