POJO는 특정 기술 스택에 종속되지 않기 때문에,
다양한 환경에서 재사용이 가능하고, 테스트가 용이합니다.
또한, 코드의 가독성을 높이고 유지보수를 쉽게 만들어줍니다.
Spring Framework에서 POJO
Spring Framework의 가장 큰 특징 중 하나는 POJO 기반의 컴포넌트 구성입니다.
즉, 비즈니스 로직을 담당하는 클래스가 Spring 전용 API에 전혀 의존하지 않아도,
Spring이 이 객체를 빈(Bean) 으로 등록하고 DI, AOP 같은 기능을 제공할 수 있다는 뜻입니다.
아래와 같은 클래스들은 모두 POJO로, 특별한 상속이나 인터페이스 구현 없이 일반 자바 클래스입니다.
역할
예시 어노테이션
설명
일반 컴포넌트
@Component
범용 빈
서비스 계층
@Service
비즈니스 로직 담당
DAO 계층
@Repository
데이터 접근 담당
컨트롤러 계층
@Controller, @RestController
웹 요청 처리
데이터 전송
DTO / VO / Entity
상태 정보 전달 또는 DB 매핑
예시:
순수 POJO 클래스
Spring에서 빈으로 등록하기 (@Component 사용)
@Component를 붙이면 Spring이 이 클래스를 빈으로 등록함
내부 로직은 변하지 않음 → POJO의 순수성 유지
정리
구분
설명
POJO
순수 자바 클래스, 프레임워크에 종속되지 않음
Spring 빈
POJO에 @Component류 어노테이션을 붙이면 등록됨
비침투적 설계
POJO 자체를 수정하지 않고도 DI, AOP, 생명주기 등을 Spring이 처리
장점
유지보수성, 테스트 용이성, 재사용성 우수
꼬리 질문
POJO를 도입하지 않았을 때 발생할 수 있는 코드의 문제점은 무엇인가요?
Spring은 어떻게 POJO에 DI와 AOP 기능을 주입하나요? (프록시 기반 메커니즘 설명)