CS

[Spring] POJO

KJihun 2023. 11. 20. 16:47
728x90

 

 

POJO

"Plain Old Java Object"의 약자로, 특정 프레임워크를 구현 및 상속받지 않은 일반적인 자바 객체를 말한다.

객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고, 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 의미한다. 특정 프레임워크나 라이브러리에 종속되지 않는 객체를 의미한다. 

 

 

 

위 이미지는 POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미한다.

 

 

POJO 프로그래밍

POJO 프로그래밍은 POJO를 이용하여 프로그래밍 코드를 작성하는 것이다.

그러나 순수 자바 객체만을 사용한다고 해서 POJO 프로그래밍이라고 볼 수는 없다.

POJO 프로그래밍으로 작성한 코드가 되기 위해서는 기본적인 규칙들을 지켜야 한다.

 

1. Java나 Java의 스펙에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 한다.

2. 특정 환경에 종속적이지 않아야 한다.

특정 프레임워크에서만 동작이 가능하면 안된다.

POJO는 환경에 독립적이어야 한다.

비즈니스 로직을 담고 있는 POJO 클래스는 웹 기반의 환경 정보나 웹 기술을 담고 있는 클래스 또는 인터페이스를 사용하면 안된다.

비즈니스 로직을 담는 코드에 HTTPServletRequest, HttpSession와 같은 java servlet API를 사용하게 된다면 POJO라 할 수 없다.

코드 내에서 Tomcat이 지원하는 API를 직접 사용할 시, 이후 시스템의 요구 사항이 변경되어 톰캣에서 Zetty라는 다른 서블릿 컨테이너를 사용하게 된다면, 애플리케이션 코드에서 사용하고 있는 Tomcat API 코드들을 모두 제거하고 Zetty로 수정해야 한다. 최악의 경우 애플리케이션을 전부 수정해야 하는 상황에 직면할 수도 있다.

따라서, Java 이외의 다른 기술에 얽매이지 않으며, 특정 환경에 종속적이지 다른 않아야 POJO 프로그래밍이라고 할 수 있다.

 

POJO 프로그래밍이 필요한 이유

  1. 특정 환경이나 기술에 종속적이지 않으면 재사용이 가능하고, 확장 가능한 유연한 코드를 작성할 수 있다.
  2. 저수준 레벨의 기술과 환경에 종속적인 코드를 제거하여 코드를 간결해지며 디버깅하기에도 상대적으로 쉬워진다.
  3. 특정 기술이나 환경에 종속적이지 않기 때문에 테스트가 단순해진다.
  4. 객체지향적인 설계를 제한 없이 적용할 수 있다. (가장 중요한 이유)

 

POJO와 Spring의 관계

Spring은 POJO 프로그래밍을 지향하는 프레임워크이다.

최대한 다른 환경이나 기술에 종속적이지 않도록 하기 위한 POJO 프로그래밍 코드를 작성하기 위해 Spring 프레임워크에서는 IoC/DI, AOP, PSA를 지원하고 있다.

 

 

 

[Java] POJO 와 Beans 의 차이점

POJO Classes POJO(Plain Old Java Object) 는 자바 객채의 표준(ordinay)이며, Java Language Specification 에 의한 어떤 특정한 엄격한(restriction) 경계가 존재하지 않습니다. POJO 는 가독성과 재사용성을 중요시하게

sanghye.tistory.com

 

'CS' 카테고리의 다른 글

[Spring] Servlet  (1) 2023.11.22
[Spring] ServletConfig, ServletConfig  (0) 2023.11.22
[Spring] Filter와 Interceptor  (0) 2023.11.20
[Spring]Front Controller, Dispatcher Servlet  (0) 2023.11.16
[mySQL] 면접 예상 질문  (0) 2023.11.07