Domain/Spring

[Spring] POJO ( Spring POJO / Spring Triangle / Plain Old Java Object )

by Donghwan 2021. 7. 13.

스프링 핵심 개발자들은 “스프링의 정수는 엔터프라이즈 서비스 기능을 POJO에 제공하는 것”이라고 했습니다. 분리됐지만 반드시 필요한 엔터프라이즈 서비스 기술을 POJO 방식으로 개발된 애플리케이션 핵심 로직을 담은 코드에 제공한다’는 것이 스프링의 가장 강력한 특징과 목표입니다.

스프링 삼각형

스프링 애플리케이션은 POJO를 이용해서 만든 애플리케이션 코드와, POJO가 어떻게 관계를 맺고 동작하는지를 정의해놓은 설계정보로 구분됩니다. 스프링의 주요 기술인 IoC/DI. AOP와 PSA는 애플리케이션을 POJO로 개발할 수 있게 해주는 가능기술이 라고 불립니다.

 

POJO란?

POJO는 Plain Old Java Ojbect를 의미합니다. POJO는 자바의 단순한 오브젝트라고 할 수 있습니다. 진정한 POJO의 의미는 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트입니다. 이상적으로, POJO는 Java 언어 규약에 의해 강제된 것 이외의 제한에 구속되지 않는 Java 오브젝트입니다.

 

POJO의 조건

  • 특정 규약에 종속되지 않는다.
    자바 언어와 꼭 필요한 API 외에는 종속되지 않아야 합니다. 또, 특정 클래스를 상속받아 만들어야 하는 규악이 있는 경우도 마찬가지 입니다.
  • 특정 환경에 종속되지 않는다.
    특정 프레임워크에서만 사용이 가능한 동작이 가능한 경우를 말합니다. 또 환경에 종속적인 클래스 또는 API를 사용하는 경우도 해당됩니다.
  • 어노테이션을 사용했을 경우
    코드로 표현하기 적절하지 않은 부가적인 정보를 담고 있으면서 환경에 종속되지 않을 경우는 여전히 POJO라고 할 수 있지만, 값이나 특정 기술 또는 환경에 종속적인 정보를 담는다면 POJO라고 할 수 없다.
  • 단일 책임 원칙
    특정 규약과 환경에 종속되지 않는다고 모두 POJO인 것은 아닙니다. 책임과 역할이 다른 코드를 하나의 클래스에 넣는 경우 객체지향 원칙에서 그만큼 멀어지기 때문에 진정한 POJO라 할 수 없습니다.

 

POJO의 장점

  • 특정한 기술과 환경에 종속되지 않는 오브젝트
  • 테스트에 유리합니다.
  • 객체지향적인 설계를 자유롭게 적용할 수 있습니다.

 


참고자료

  • 토비의 스프링 3.1
728x90
반응형

댓글