////
Search
Duplicate
🌔

Chapter 1. 스프링 시작하기

이 장에서 배우는 내용
스프링과 스프링 부트 핵심 사항
스프링 프로젝트 생성하기
스프링 개요

1. 스프링 시작하기

1. 스프링이란?

스프링이 어떻게 동작하는지 이해하는 데 도움을 주는 몇 가지 기본 개념을 알아보자.
대부분의 어플리케이션은 애프릴케이션 전체 기능 중 일부를 담당하는 많은 컴포넌트로 구성되며 각 컴포넌트는 다른 어플리케이션 구성 요소와 협력해서 작업을 처리한다.
그리고 어플리케이션이 실행될 때는 각 컴포넌트가 어떻게든 생성되어야 하며 상호 간에 이를 알 수 있어야 한다.
스프링은 스프링 어플리케이션 컨텍스트(Spring application context)라는 컨테이너를 제공한다.
어플리케이션 컴포넌트들을 생성하고 관리한다. 그리고 어플리케이션 컴포넌트 또는 빈들은 해당 컨테이너 내부에서 서로 연결되어 완전한 어플리케이션을 만든다.
이러한 빈들의 연결은 의존성 주입이라고 알려진 패턴을 기반으로 수행된다.
어플리케이션 컴포넌트가 의존하는 다른 빈의 생성과 관리를 컨테이너가 해주며 이 컨테이너는 모든 컴포넌트를 생성, 관리하고 해당 컴포넌트를 필요로 하는 빈에 주입한다.
이는 일반적으로 생성자 인자 또는 속성의 접근자 메소드를 통해 처리된다.
기존의 버전에는 컴포넌트 및 다른 컴포넌트와의 관계를 나타내는 XML 파일을 사용해서 빈을 상호 연결하도록 컨테이너에 알려주었으나 최신 버전에서는 자바 기반의 구성이 더 많이 사용된다.
⇒ XML 기반 구성에 비해 자바 기반의 구성은 더 강화된 타입 안전성과 향상된 리팩토링 기능을 포함해서 몇 가지 기능을 제공한다.
물론 스프링이 자체적으로 컴포넌트들을 구성할 수 있는 AutoConfiguration 기능이 있어서 별도의 구성 기능이 없어도 되나 AutoConfiguration을 할 수 없는 경우엔 필요하다.
AutoConfiguration은 자동 연결과 컴포넌트 스캔이라는 스프링 기법을 기반으로 한다.
컴포넌트 스캔을 사용해 어플리케이션의 컴포넌트들을 찾은 후, 컨테이너의 빈으로 생성한다. 또한 스프링은 Autowiring을 사용하여 의존 관계가 있는 컴포넌트들을 자동으로 다른 빈에 주입한다.
최근 스프링 프레임워크의 생산성 향상을 제공하는 확장인 스프링 부트가 소개되면서 AutoConfiguration 기능이 더욱 향상되었다.
2, 3장은 실습 내용이라 제외하였습니다.

4. 스프링 살펴보기

1. 핵심 스프링 프레임워크

핵심 컨테이너와 의존성 주입 프레임워크 외에도 웹 프레임워크인 스프링 MVC가 있다.

2. 스프링 부트

스프링 부트는 다음의 편리한 기능도 제공한다.
Actuator는 어플리케이션의 내부 동작을 런타임 시에 살펴볼 수 있는 기능을 제공하며 여기엔 지표, 스레드 덤프 정보, 어플리케이션의 상태, 어플리케이션에서 사용할 수 있느 환경 속성이 포함된다.
환경 속성의 명세
핵심 프레임워크에 추가되는 테스트 지원

3. 스프링 데이터

기본적인 데이터 영속성 지원은 핵심 스프링 프레임워크에 포함되어 있지만 스프링 데이터는 외에도 놀라운 기능들을 제공한다.
즉, 간단한 자바 인터페이스로 어플리케이션의 데이터 리포지터리를 정의할 수 있으며 메소드를 작명 규칙을 사용해서 정의할 수 있다.

4. 스프링 시큐리티

스프링은 강력한 보안 프레임워크를 가지고 있는데, 스프링 시큐리티다.
스프링 시큐리티는 인증, 허가, API 보안을 포함하는 폭넓은 범위의 어플리케이션 보안 요구를 다룬다.

5. 스프링 통합과 배치

스프링 통합은 데이터가 사용 가능한 즉시 처리되는 실시간 통합을 수행한다.
스프링 배치는 다량의 데이터가 처리되는 시점을 트리거가 알려줄 때 데이터가 수집 처리되는 배치 통합을 수행한다.

6. 스프링 클라우드

스프링을 사용해서 클라우드 어플리케이션을 개발하기 위한 프로젝트들의 모음인 스프링 클라우드도 있다.

요약

웹 어플리케이션 생성, 데이터베이스 사용, 어플리케이션 보안, 마이크로서비스 등에서 생산성을 향상시켜주는 것이 스프링의 목표다.
스프링 부트는 손쉬운 의존성 관리, AutoConfiguration, 액츄에이터 등을 스프링에서 사용할 수 있게 해준다.
스프링 어플리케이션은 Spring initializer를 사용해서 초기 설정을 수행할 수 있다. 이는 웹을 기반으로 하며 대부분의 자바 개발 환경을 지원한다.
빈이라고 하는 컴포넌트는 스프링 어플리케이션 컨텍스트에서 자바나 XML로 선언할 수 있으며 컴포넌트 스캔으로 찾거나 스프링 부트 AutoConfiguration에서 자동으로 구성할 수 있다.