정의: 자바 플랫폼을 위한 (과거 대비) 가볍고 유연한 애플리케이션 프레임워크
→ 전통적으로 EJB(Enterprise JavaBeans) 와 같은 무거운 J2EE 솔루션 대비 “경량(Lightweight)” 프레임워크로 주목받아 왔으나, 스프링 자체도 방대한 기능을 가지고 있다. 다만 자바 애플리케이션 개발을 위한 필요한 모듈만 골라 사용할 수 있어 과거 대비 훨씬 가볍고 유연하게 구성할 수 있다.
Spring의 POJO 철학은 "Spring이 특정 기술에 종속되지 않고 순수한 Java 객체로 개발할 수 있도록 지원하는 것". 즉, Spring을 사용하더라도 비즈니스 로직을 프레임워크에 의존하지 않는 POJO로 작성하여, 유지보수성과 확장성을 극대화하는 것이 핵심이다.
ex) Spring 환경에서 POJO 사용
import org.springframework.stereotype.Service;
@Service
public class UserService {
public String getUserName(Long id) {
return "User-" + id;
}
}
➡️ @Service애너테이션을 추가했지만, 클래스 자체는 여전히 POJO이다.
➡️ 스프링은 IoC 컨테이너 를 통해 이 객체를 관리할 뿐, 코드 구조에는 영향을 주지 않는다.
➡️ DI, POJO 기반 설계, MockMvc 등 테스트 지원 모듈을 통해 단위 테스트와 통합 테스트를 손쉽게 수행 가능.