소프트웨어에서 프레임워크란 '기능을 미리 클래스나 인터페이스 등으로 만들어 제공하는 반제품' 정도로 해석할 수 있다. 즉, 어느 정도 완성된 상태로 제공하는 기능이다. 애플리케이션 개발 시 자주 사용하는 기능을 클래스나 인터페이스 등으로 미리 어느 정도 만들어서 제공하면 개발자가 자신의 상황에 맞게 변형 및 추가해서 이를 사용할 수 있다. 그러면 처음부터 개발할 필요 없이 자신이 원하는 애플리케이션을 짧은 시간에 만들 수 있으며, 일정한 틀 속에서 개발을 하기 때문에 개발 후 유지보수 및 기능의 확장성에서도 고품질이 보장된다.
스프링 프레임워크는 프레임워크 중 현재 가장 많이 사용된다. 스프링은 자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크로, 기존 프레임워크보다 가벼운 경량 프레임워크이다. 또한 스프링은 경량 컨테이너라고도 부른다.
'컨테이너'라고 하면 대표적인 것으로 톰캣을 들 수 있다. 톰캣은 서블릿 컨테이너라고 부르는데 톰캣을 실행하면 톰캣은 서블릿의 생성, 초기화, 서비스 실행, 소멸에 관한 모든 권한을 가지고 서블릿을 관리하기 때문이다. 스프링 또한 마찬가지이다. 애플리케이션에서 사용되는 여러 가지 빈(클래스 객체)을 개발자가 아닌 스프링이 권한을 가지고 직접 관리한다. 스프링 이전에 사용되던 프레임워크로 EJB (Enterprise JavaBeans) 라는 것이 있는데, EJB는 실행 시 무거워 여러 가지 문제를 일으킨다. 스프링은 이런 EJB의 단점은 개선하고 좋은 점은 더 발전시켜서 탄생한 프레임워크이다.
- 의존성 주입: 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성하여 사용하는 방법이다.
- 제어 역행: 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행하는 방법이다.
- 관점 지향: 핵심 기능 외 부수 기능들을 분리 구현함으로써 모듈성을 증가시키는 방법이다.
기능 | 설명 |
---|---|
Core | 다른 기능과 설정을 분리하기 위한 IoC 기능을 제공한다 |
Context | 스프링의 기본 기능으로서 애플리케이션의 각 기능을 하는 빈 (Bean)에 대한 접근 방법을 제공한다 |
DAO | JDBC 기능을 좀 더 편리하게 사용할 수 있다 |
ORM | 하이버네이트나 마이베티스 같은 영속성 관련 프레임워크와 연동된 기능을 제공한다 |
AOP | 관점 지향 기능을 제공한다 |
Web | 웹 애플리케이션 개발에 필요한 기능을 제공한다 |
WebMVC | 스프링에서 MVC 구현에 관련된 기능을 제공한다 |