Chapter 01. 스프링 시작하기

스프링이 최초로 소개되었던 15년 전에는 애플리케이션 유형이 주로 관계형 데이터베이스를 사용하는 웹 브라우저 기반의 웹 애플리케이션이었다. 하지만 현대의 애플리케이션은 그 뿐만 아니라, 다양한 방식으로 변화하였다. 특히 클라우드에 맞춰진 마이크로서비스, 더 큰 확장성과 향상된 성능을 제공하는 리액티브 프로그래밍도 큰 관심사이다. 이에 따라 스프렝 프레임워크도 진화하였고, 스프링 부트로 복잡한 설정 과정도 간소화되었다. 스프링은 이처럼 다양한 목적에 따라 애플리케이션을 구성하는데 충분히 도움을 줄 수 있는 프레임워크이다.

1.1 스프링이란?

컴포넌트

스프링은 스프링 애플리케이션 컨텍스트라는 컨테이너를 제공하는데, 이것은 스프링 생명주기(Life Cycle)에 따라 애플리케이션 컴포넌트들을 생성하고 관리한다. 그리고 애플리케이션 컴포넌트 또는 빈(Bean)들은 스프링 애플리케이션 컨텍스트 내부에서 서로 연결되어 완전한 애플리케이션으로서 실행된다.

빈의 연결: 의존성 주입(DI)

빈의 상호 연결은 의존성 주입(Dependency Injection, DI)의 패턴으로 수행된다. 즉, 애플리케이션 컴포넌트에서 의존하는 다른 빈의 생성과 관리를 자체적으로 하는 대신 별도의 object(컨테이너)가 해주며(IoC), 이 object에서는 모든 컴포넌트를 생성, 관리하고 해당 컴포넌트를 필요로 하는 빈에 주입(연결)한다. 일반적으로 이는 생성자 파라미터나 setter를 통해 처리된다.