개발 일지/Spring

[Spring] POJO

미숫가루설탕많이 2023. 2. 2. 13:28

 POJO(Plain Old Java Object)는 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용이 가능한 방식으로 설계된 객체이다. 간단히 말하면 Java로 생성하는 순수한 객체라고 표현할 수 있다.

 

 Spring은 POJO 프로그래밍을 지향하는 프레임워크이며, POJO는 Spring에서 사용하는 핵심 개념인 IoC/DI, AOP, PSA를 통해 달성할 수 있다.

 

 단순히 순수 자바 객체만을 사용해서 프로그래밍 코드를 작성한다 해서 POJO 프로그래밍이라고 볼 수는 없으며, POJO 프로그래밍으로 작성한 코드가 되기 위해서는 다음과 같은 규칙을 지켜야 한다.

 

  • Java나 Java의 스펙(사양)에 정의된 것 이외의 특정 기술이나 규약에 종속되지 않는다.
    : 특성 기술을 상속해서 코드를 작성하게 된다면 자바의 단일 상속 제한 때문에 더 이상 해당 클래스에 객체 지향적인 설계 기법을 적용하기가 어려워진다는 문제가 있다.

  • 특정 환경에 종속되지 않는다.
    : 특정 기업의 프레임워크나 서버에서만 동작가능한 코드여서는 안된다. 즉, POJO는 환경에 독립적이어야 한다. 예를 들어, 순수 Java로 작성한 애플리케이션 코드 내에서 Tomcat이 지원하는 API를 집적 가져다 사용하고 있었는데 시스템의 요구 사항이 변경되어서 Tomcat 말고 zetty라는 Servlet Container를 사용하게 된다면 모든 Tomcat API 코드를 걷어내고 Zetty로 수정하거나 애플리케이션을 전부 뜯어고쳐야 하는 상황이 발생할 수 있다.

  • 객체 지향적 원리에 충실해야한다.

 

 POJO의 장점은 다음과 같다.

 

  • 코드가 깔끔해진다.

  • 간편하게 테스트할 수 있다.

  • 객체지향적은 설계를 자유롭게 적용할 수 있다.

 

 아직은 객체 지향적인 사고를 하기에는 경험이 많이 부족하다고 생각한다. 하지만 앞으로 계속될 프로그래밍의 모든 단계에서 내가 작성한 코드가 객체지향스러운가를 항상 고민하면서 코드를 작성하는 습관을 들여서 좋은 개발자로 거듭날 것이다.

'개발 일지 > Spring' 카테고리의 다른 글

[Spring] Spring Boot  (0) 2023.02.03
[Spring] PSA  (0) 2023.02.02
[Spring] AOP  (0) 2023.02.02
[Spring] IoC / DI  (0) 2023.02.02
[Spring] 의존성 주입(Dependency Injection, DI)  (1) 2023.01.04