![](https://velog.velcdn.com/images/marigold1/post/9b427402-dbc4-4c61-9cf3-ec5a0bd79509/image.png)
- 위 그림에서 POJO는 Spring에서 사용하는 핵심 개념들에 둘러 싸여져 있다. 이는 POJO라는 것을 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미합니다.
POJO 프로그래밍이란?
- 특정 환경에 종속적이지 않아야 한다.
- Java나 Java의 스펙(사양)에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 한다.
- java로 생성하는 순수한 객체
- 예를 들어 순수 java로 작성한 애플리케이션 코드를 Tomcat이 지원하는 API를 가져다 쓸때
- 시스템 요구사항이 바뀌었다.
- Tomcat말고 Zetty를 쓰라한다면
- Tomcat API 코드를 모두 걷어내고 Zetty로 수정하던가
- 최악의 경우 애플리케이션을 전부 뜯어 고쳐야할 수도 있다.
이런것들을 방지하기위해 POJO 프로그래밍을 쓰게된다.
POJO 프로그래밍이 필요한 이유
- 특정 환경이나 기술에 종속적이지 않으면서 재사용가능하고, 확장 가능한 유연한 코드 작성
- 저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거함으로 코드가 깔끔해짐
- 코드가 깔끔해지기 때문에 디버깅하기도 편하다
- 특정 기술이나 환경에 종속적이지 않기 때문에 테스트 역시 간단하다
- 객체지향적인 설계를 제한없이 적용 가능