
웹 프로그램을 만들기 위해서는 쿠키/세션 처리, 로그인/로그아웃 처리, 권한 처리, 데이터베이스 처리 등 다양한 기능이 필요하다.
웹 애플리케이션을 만들 때마다 이러한 기능들을 일일이 구현하는 것은 비효율적이다.
이러한 반복적인 개발을 줄이고 개발자가 비즈니스 로직에 집중할 수 있도록 도와주는 것이 프레임워크다.
스프링 프레임워크는 자바 플랫폼을 위한 포괄적인 애플리케이션 프레임워크이다.
스프링 프레임워크의 핵심 기능은 다음과 같다.
제어의 역전(IoC - Inversion of Control)
객체의 생명주기 관리를 개발자가 아닌 스프링 컨테이너가 담당한다. 이를 통해 느슨한 결합(Loose Coupling)을 가능하게 한다.
의존성 주입(DI - Dependency Injection)
객체가 필요로 하는 다른 객체(의존성)를 스프링 컨테이너에서 주입해준다. 개발자는 객체를 직접 생성하고 연결할 필요 없이 객체를 선언하고 사용하기만 하면 된다.
(생성자 주입, @Autowired 등)
관점 지향 프로그래밍 (AOP - Aspect Oriented Programming)
로깅, 트랜잭션, 보안 등 애플리케이션 전반에 걸쳐 적용되는 공통 관심사를 핵심 비즈니스 로직과 분리하여 모듈화할 수 있게 지원한다.
트랜잭션 관리
데이터 일관성을 유지하기 위한 트랜잭션 처리를 지원한다.
Spring MVC
웹 애플리케이션 개발을 위한 MVC 패턴 기반 프레임워크를 제공한다.
기능이 매우 강력하고 유연하지만, 초기 설정이나 다양한 모듈을 조합하는 과정이 다소 복잡할 수 있다.
스프링 부트는 스프링 프레임워크가 제공하는 모든 강력한 기능들을 그대로 활용하면서도 복잡하고도 반복적인 설정들을 획기적으로 간소화 한 프레임워크이다.
핵심 특징