99클럽 10일차 TIL: POJO 클래스

2024. 4. 13. 12:4399클럽/TIL

728x90
반응형

#1. 오늘의 학습 키워드

자바 스프링에서 POJO 클래스란 무엇일까

  • @Controller, @Service, @Repository, @Configuration 등 Bean 으로 등록 할 객체들의 대응하는 클래스들을 뭐라고 통칭할 지 궁금해졌다.
    • controller → service → repository 의 기본적인 백엔드 개발 구조는 노드로 백엔드 개발 시작했을 때부터 익숙하였기에, 각 컴포넌트의 의미에 대해서는 자연스럽게 받아드렸다.
    • 그러나 노드에서는 각 구조에 대해서 따로 노드가 관리를 해주는 게 아닌, 코드의 로직 자체가 자신이 어떤 역할을 담당하는 지 정했었다.
    • 스프링에서는 클래스 선언 부 상단에 해당 클래스가 어떤 컴포넌트에 속하는 지 어노테이션을 명시를 해주었는데, 이 행위가 어떤 의미를 뜻하는 지 전날 올린 Bean 의 등록을 공부하면서 의식하게 되었다.

#2. 공부한 내용

  • POJO 클래스
    • Plain Old Java Object
      • 순수한 오래된 자바 객체
    • POJO는 스프링에서 중요한 개념으로, IoC/DI, AOP, PSA 를 통해서 달성 가능하다.
      • 달성하려는 목적은 다음과 같다
        • 객체 지향적 원리 지향.
        • 환경과 기술에 종속 X
        • 코드 재사용성 높게.
      • 스프링은 이 POJO 클래스들로 자바 어플리케이션을 개발하는 데에 의의를 두고 있다.
        • 그래서 스프링의 주요 기능 중 대다수는 POJO 클래스들을 구상하고, 이 POJO 클래스들을 IoC 컨테이너로 관리하는 일과 관련되어 있다.
    • POJO 클래스의 주요 이점은 다음과 같다
      • 코드의 단순성
        • POJO 자체의 의미 처럼, 간결하고 명확한 코드를 지향
      • 재사용성
        • POJO 는 의존성이 없기에, 다양한 환경과 프레임워크에서 쉽게 재사용 가능하다.
      • 테스트 용이성
        • POJO는 결국 객체라서, mockito 를 이용해 모의 객체를 생성해서 테스트하기 용이하다.
  • POJO 프로그래밍
    • POJO 를 이용한 프로그래밍
      • POJO 클래스만을 사용한다고 해서 POJO 프로그래밍이 되는 것이 아닌, 아래의 규칙들을 지켜야 한다.
      1. Java나 Java 의 스펙에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 한다.
      2. 특정 환경에 종속적이지 않아야 된다.
  • 참조:

#3. 오늘의 회고

  • POJO의 개념은 스프링 개발에 있어서 아주 주요한 개념이다.
    • 그러나 나는 백엔드 개발을 노드.js 부터 시작하여, 현업에서 자바 스프링으로의 리펙토링을 거쳐 스프링으로 처음 개발을 시작한 사람으로써, 스프링의 기본부터 공부를 하지 않았기에, 이 개념에 대해 정확히 알고 있지 못했다.
    • 그렇기에 이렇게 개발 과정에서는 너무 편리하지만, 이 편리함은 스프링은 어떻게 제공해주는 것일까? 라는 질문을 계속 되뇌이며, 스프링 프레임워크에 대해 더 알아가는 과정을 거쳐야 된다고 느낀다. 그래야 내 코드가 어떤 식으로 작동하는 지에 대한 더욱 자세하게 깨달을 수 있기 때문이다.
728x90
반응형