•
이 장에서 배우는 내용
◦
스프링과 스프링 부트 핵심 사항
◦
스프링 프로젝트 생성하기
◦
스프링 개요
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에서 자동으로 구성할 수 있다.