◆ 스프링 프레임워크(Spring Framework)
- 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 합니다.
- 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있습니다.
- 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있습니다.
- 스프링은 Plain Old Java Object 방식의 프레임워크입니다.
- 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍습니다.
- 스프링은 제어 반전(IoC : Inversion of Control)을 지원합니다.
- 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출합니다.
- 스프링은 의존성 주입(DI : Dependency Injection)을 지원합니다.
- 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜줍니다.
- 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원합니다.
- 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있습니다.
◆ 스프링 레거시(Spring Legacy)
- 스프링 프레임워크의 초기 버전으로, 엔터프라이즈 급의 애플리케이션 개발을 지원하는 자바 플랫폼입니다.
- 전통적으로 XML 구성을 많이 사용하였고, bean 등록과 의존성 주입을 위해 XML 파일을 사용하였습니다.
- 스프링의 프로그래밍 모델인 AOP(Aspect Oriented Programming)와 트랜잭션 관리와 같은 기능을 적극적으로 활용하였습니다.
- Aspect-Oriented Programming(AOP) : 이는 관점 지향 프로그래밍으로, 흩어진 코드를 한 곳으로 모으는 기법입니다. 이를 통해, 보일러플레이트 코드를 줄이고 코드의 가독성을 향상시킬 수 있습니다.
- 스프링 MVC 패턴을 이용한 웹 개발에 집중되어 있습니다. 이는 서블릿, JSP, 컨트롤러 등을 활용하여 웹 애플리케이션을 구축하는 방법입니다.
- Spring MVC : 이는 웹 애플리케이션을 개발하는 데 사용되는 프레임워크입니다. 이를 통해, 개발자는 Model-View-Controller 디자인 패턴을 쉽게 구현할 수 있습니다.
- 복잡한 XML 설정, 서블릿 설정 등을 직접 관리해야 하는 구조를 가지고 있습니다.
- 데이터베이스 연결 설정, 보안 설정, MVC 설정 등을 개발자가 직접 수행해야 합니다. 개발 초기 단계에서 상당한 시간이 소요될 수 있습니다.
- 매우 세밀한 설정이 가능하며, 기존의 Java EE 웹 개발 방식에 익숙한 개발자들이 선호할 수 있습니다.
◆ 스프링 부트(Spring Boot)
- 스프링 기반의 애플리케이션을 빠르고 쉽게 개발할 수 있도록 도와주는 도구입니다.
- 스프링 기반의 애플리케이션 개발을 간단하게 만들고, 일반적으로 발생하는 문제에 대한 기본적인 해결 방법을 제공하는 것입니다.
- Starters : 이는 자주 사용하는 스프링 관련 의존성 그룹을 포함하고 있는 라이브러리입니다.
- 개발자는 필요한 의존성을 쉽게 추가할 수 있습니다.
- Auto-Configuration : 이는 애플리케이션에 필요한 기본 설정을 자동으로 해주는 기능입니다.
- 개발자는 복잡한 설정을 신경 쓸 필요 없이 애플리케이션 개발에 집중할 수 있습니다.
- Embedded Server : 이는 애플리케이션을 실행하는데 필요한 서버를 내장하고 있습니다.
- 개발자는 서버 설정 없이도 애플리케이션을 쉽게 실행할 수 있습니다.
- 스프링 부트는 많은 개발자가 스프링 레거시의 복잡한 설정에 대한 부담을 덜고, 스프링 기반의 애플리케이션 개발에 보다 집중할 수 있도록 도와줍니다.
- 이를 통해 빠르게 프로토타이핑하거나 개발 초기 단계에서 애플리케이션을 빠르게 배포할 수 있습니다.