경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
POJO 기반의 구성
POJO는 Plain Old Java Object의 약어이며 오래된 방식의 간단한 자바 객체라는 말이다.즉, 우리가 자바에서 개발하는 지극히 평범한 객체를 POJO라고 한다. 다만, POJO는 특정 규약과 특정 환경에 종속되어서는 안되고 객체지향 설계를 잘 지켜야한다는 조건이 있다.
DI를 통한 객체 간의 관계 구성
스프링은 그 자체가 구조를 설계할 수 있어서 개발자가 부품을 만들어 조립하는 형태의 개발이 가능하다. 이렇게 조립된 코드의 최종 호출은 개발자가 결정하는 것이 아니라 스프링 프레임워크 내부에서 이뤄지는데, 이것을 제어의 역행(IOC)라고 한다.
의존성 주입(DI)는 제어의 역행이 일어나는 것을 전체로 하여 스프링 내부의 객체들간의 관계를 만들어줄 때 사용한다. 의존성 주입은 특정 객체가 필요로 하는 객체를 외부에서 결정하여 연결시키는 것을 의미한다.
AOP 지원
AOP(Aspect Oriented Programming)은 관점 지향 프로그래밍을 뜻한다. 대부분의 시스템에서 비즈니스 로직은 아니지만, 보안 로그, 트랜잭션과 같이 반드시 처리가 필요한 부분을 횡단 관심사라고 한다. 스프링에서는 이러한 관심사를 비즈니스 로직과 분리하여 중복된 코드를 줄이고 개발자가 비즈니스 로직에 집중하도록 만들어 준다.
WAS에 독립적인 개발 환경
스프링은 가장 단순한 서버환경인 톰캣(Tomcat)을 통해 완벽하게 동작한다. 단순한 개발툴과 기본적인 개발환경으로도 엔터프라이즈 개발에서 필요로 하는 주요한 기능을 갖춘 애플리케이션을 개발하기에 충분하다.