PMDEXIT 프로젝트 용어사전

스프링 프레임워크

Spring Framework

의존성 주입·AOP 기반의 자바 표준 엔터프라이즈 프레임워크.

스프링 프레임워크란

스프링 프레임워크(Spring Framework)는 자바 기반 엔터프라이즈 애플리케이션을 구축하기 위한 사실상의 표준 프레임워크다. 초기 자바 엔터프라이즈 환경의 무겁고 침습적인 구조에 대한 대안으로 등장해, 가볍고 유연한 개발 방식을 제시했다.

의존성 주입과 관점 지향 프로그래밍을 두 축으로 삼아 객체 간 결합을 느슨하게 하고 공통 관심사를 분리한다. 오늘날 국내 공공·금융권을 비롯한 다수 프로젝트에서 표준 개발 기반으로 자리 잡았다.

표현 계층L4서비스 계층L3데이터 접근 계층 (DAO)L2데이터베이스L1
스프링 계층형 구조

제어의 역전과 의존성 주입

스프링의 핵심은 객체의 생성과 연결 책임을 개발자 코드가 아니라 컨테이너가 떠맡는 제어의 역전이다. 이를 구체화한 방식이 의존성 주입(DI)으로, 한 객체가 필요로 하는 다른 객체를 외부에서 넣어 준다.

객체가 협력 대상을 직접 생성하지 않으므로 구현체를 바꾸기 쉽고, 테스트 시 가짜 객체로 대체하기도 수월하다. 이런 느슨한 결합은 부품을 조립하듯 시스템을 구성하는 컴포넌트 기반 개발(CBD) 방법론의 지향과 자연스럽게 맞물린다.

AOP와 공통 관심사 분리

로깅, 트랜잭션, 보안 점검처럼 여러 모듈에 흩어져 반복되는 기능을 횡단 관심사라 한다. 관점 지향 프로그래밍(AOP)은 이러한 공통 기능을 핵심 업무 로직에서 떼어 내 한곳에서 관리하게 한다.

덕분에 비즈니스 코드는 본연의 책임에만 집중하고, 트랜잭션 경계 같은 부가 처리는 선언적으로 적용된다. 코드 중복이 줄고 정책 변경이 한 지점에서 끝나므로 유지보수 부담이 크게 낮아진다.

다만 어떤 지점에 어떤 부가 기능이 끼어드는지가 코드 표면에 드러나지 않으므로, 적용 범위를 팀이 명확히 공유해야 디버깅 혼선을 막을 수 있다.

핵심 개념의미효과
IoC제어의 역전컨테이너가 생성·연결
DI의존성 주입느슨한 결합
AOP관점 지향공통 관심사 분리
스프링 두 축과 IoC

계층형 구조와 데이터 접근

스프링 기반 애플리케이션은 표현·서비스·데이터 접근 계층으로 책임을 나누어 구성하는 것이 일반적이다. 데이터 접근 계층에서는 데이터베이스 연동 로직을 DAO 패턴으로 캡슐화하고, 계층 사이에 오가는 데이터는 DTO 객체에 담아 전달한다.

스프링은 일관된 예외 처리와 트랜잭션 추상화를 제공해 다양한 영속성 기술을 동일한 방식으로 다루게 한다. 이런 구조화는 역할 경계를 명확히 해 협업과 변경 관리를 쉽게 만든다.

영속성과 확장 모듈

스프링은 객체와 관계형 데이터베이스를 잇는 ORM 기술과 긴밀하게 통합되어, 영속성 프레임워크를 손쉽게 결합할 수 있는 연동 지점을 제공한다. 개발자는 트랜잭션 관리와 자원 해제를 프레임워크에 위임하고 업무 로직에 집중한다.

또한 웹, 보안, 배치, 메시징 등 영역별 확장 모듈이 동일한 컨테이너 위에서 일관되게 동작한다. 필요한 모듈만 선택해 조합하는 구조여서, 프로젝트 성격에 맞는 기술 스택을 유연하게 구성할 수 있다.

이렇게 하나의 일관된 기반 위에서 영역별 기능이 맞물리는 점이 대규모 시스템을 장기간 운영하는 데 유리하다.

도입 시 고려사항

스프링의 강점인 유연함은 그만큼 설정과 구조에 대한 이해를 요구한다. 컨테이너의 생명주기, 빈 등록 방식, AOP 적용 범위를 충분히 파악하지 못하면 의도치 않은 동작이나 성능 저하로 이어질 수 있다.

추상화 계층이 두껍다 보니 문제 추적이 어려운 경우도 있어, 팀의 숙련도와 표준 가이드 정비가 도입 안정성을 좌우한다. 검증된 관례를 따르고 설정을 일관되게 유지하는 것이 대규모 프로젝트에서 위험을 줄이는 길이다.

관련 용어