스프링은 경량 컨테이너이다. (필요하지 않는 기능들 다 빼고 가볍게 사용할 수 있게 만듬)
스프링은 자바 객체를 담고 있는 컨테이너이다. 스프링 컨테이너는 이들 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리하며, 스프링 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.
스프링은 DI (Dependency Injection)을 지원한다.
스프링은 설정 파일이나 어노테이션을 통해서 객체 간의 의존 관계를 설정할 수 있도록 하고 있다. 따라서, 객체는 의존하고 있는 객체를 직접 생성하거나 검색할 필요가 없다.
스프링은 AOP (Aspect Oriented Programming)을 지원한다.
스프링은 자체적으로 AOP를 지원하고 있기 때문에 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통으로 필요로 하지만 실제 모듈의 핵심은 아닌 기능들을 분리해서 각 모듈에 적용할 수 있다.