BEST
개발 · 프로그래밍

/

백엔드

토비의 스프링 부트 - 이해와 원리

스프링 부트의 핵심 기능을 직접 만들어보면서 스프링 부트의 동작 원리를 이해하고, 이를 통해 스프링 부트를 잘 학습하고 사용하는 방법을 배우는 강의입니다. 스프링 부트가 사용하는 스프링 프레임워크의 다양한 활용법을 익힐 수 있습니다.

(5.0) 수강평 312개

수강생 6,266명

Thumbnail

초급자를 위해 준비한
[백엔드, 웹 개발] 강의입니다.

이런 걸
배워요!

  • 스프링 부트의 동작 원리

  • 스프링 부트가 제공하는 기술과 구성을 파악하고 활용하는 방법

  • 스프링 프레임워크의 핵심 기술과 활용법

  • 나만의 스프링 부트 모듈을 만드는 방법

내 손으로 프레임워크를 만들면서
스프링 부트의 근본을 확실하게! 🌱

토비의 스프링 부트

스프링 부트 핵심 기능과 동작 원리

스프링 부트는 스프링 애플리케이션을 빠르고 편하게 개발할 수 있게 도와주는 도구입니다. 매우 빠르고 편리하게 스프링 애플리케이션 개발을 시작할 수 있게 해주기 때문에 마법과 같이 보이지 않는 곳에서 많은 부분을 처리해주죠.

스프링 부트는 스프링 프레임워크를 사용하는 애플리케이션을 만드는 데 사용하는 사실상의 표준이 되었습니다. 하지만 그 편리함 뒤에 숨은 동작 원리를 알지 못하면, 여러 가지 한계와 장벽을 만나게 됩니다. 애플리케이션이 성장하고 더 많은 기술을 적용하고, 상황에 맞게 응용하려면 스프링 부트가 스프링 개발을 어떻게 지원하고 있는지를 알아야 합니다.

혹시, 이런 고민 하셨나요? 🤔

스프링 부트로 API 서버나 백엔드 서비스를 개발하고 있는데, 스프링을 제대로 알고 쓰는 건지 모르겠어요.

커뮤니티나 검색을 통해 알게 된 팁을 적용했더니 스프링 부트로 만든 시스템 기능이 달라져서 당황스러워요. 

스프링 프레임워크로만 개발하다가 스프링 부트로 넘어왔는데, 제가 알던 스프링 활용 방법이 무용지물이 된 것 같아요.

스프링과 스프링 부트는 뭐가 다른 건지, 스프링 부트가 대체 뭔지 이해가 잘 안 돼요.

스프링 부트에 새로운 기술을 추가하거나 사용 방법을 바꾸고 싶은데, 어떻게 하는 게 맞는지 고민돼요.

스프링 부트처럼 자동으로 적용될 수 있는 나만의 기술이나 기능 모듈을 만들어 보고 싶어요.

본 강의에서는 스프링 부트를 효과적으로 학습하고 활용하기 위해 필요한 스프링 부트의 핵심 동작 원리를 배웁니다. 여러분은 아래의 세 단계를 통해 스프링 부트를 제대로 이해하고 활용할 수 있게 될 거예요.

1) 스프링 부트의 동작 원리를 이해

스프링 부트의 동작 원리를 알게 되면, 스프링 부트의 많은 기술에 적용되는 일관된 방법을 알게 되어 새로운 기술 파트를 도입할 때 빠르게 학습하고 정확하게 응용할 수 있게 됩니다. 매번 검색에 의존해서 파편적인 해결 방법을 찾는 수고를 하지 않아도 됩니다. 스프링 부트에 각종 기술이 적용된 일관된 방식과 응용법을 익히면 정확하게 문제를 분석하고 해결책을 찾아갈 수 있습니다.

2) 내 손으로 스프링 부트 제작

스프링 부트의 동작 원리를 알 수 있는 가장 좋은 방법은 스프링 부트를 직접 만들어보는 것입니다. 스프링 부트는 스프링 프레임워크의 사용법을 배울 수 있는 뛰어난 예제이기도 합니다. 직접 만들어보면서 스프링 부트의 탄생 배경과 추구하는 목표, 그리고 스프링 프레임워크가 어떻게 이용돼서 만들어졌는지 등을 고민해볼 수 있습니다. 간단하지만 핵심을 담은 코드로 직접 만들어보는 과정에서 스프링과 백엔드 자바 개발의 다양한 지식을 얻을 수 있습니다. 스프링 부트가 만들어진 방법을 익히면 나만의 스프링 부트 모듈을 만들거나, 스프링 기술을 응용하는 편리한 도구도 만들 수 있습니다.

3) 스프링 부트가 스프링 프레임워크를 활용하는 방법 이해

스프링 부트의 동작 원리를 이해하게 되면 스프링 부트가 스프링 프레임워크를 어떻게 활용하는지 알게 됩니다. 또한, 스프링 부트의 각종 기능에 대해서 더 자세히 살펴보고 파악할 수 있습니다.

  • 스프링 프레임워크의 활용법을 애플리케이션 개발에 직접 응용할 수 있습니다.
  • 스프링 부트처럼 스프링 프레임워크를 잘 다룰 수 있게 됩니다.
  • 스프링 부트 스타일로 내가 만든 코드를 모듈화해서 편리하게 재사용 할 수도 있습니다. 

이런 분들께 추천해요 🙋

스프링 부트를 실무에서 사용하고 있는 분

스프링과 스프링 부트를 더 잘 알고 활용하고 싶은 분

스프링에서 스프링 부트로 전환을 고민하고 있는 분

스프링 부트를 더 효과적으로 학습하고 싶은 분

스프링 구루(Guru), 토비 님과 함께해요! 🤗

  • 자바 언어 기초 지식과, 스프링 부트로 Hello World 수준의 서버를 만들어본 경험만 있다면 충분히 시작할 수 있어요.
  • 개발 단계마다 등장하는 자바 웹 개발 기술, 스프링 프레임워크의 핵심 원리, 스프링 기술 사용법 등을 자세히 설명해드려요.
  • 스프링 부트의 핵심 동작 원리가 담긴 코드를 직접 만들어보면서, 스프링 부트의 구성을 분석하고 정확히 사용할 수 있게 도와드려요.
  • 스프링 프레임워크를 더 잘 알게 될 거예요.

학습 내용 📚

1. 스프링 부트 살펴보기

스프링 부트가 만들어지게 된 이유와 특징, 목표를 살펴봅니다. 스프링 부트가 컨테이너리스란 것은 무엇을 말하는지, 자기주장이 강하다는 것(opinionated)은 어떤 의미인지 설명하고 스프링 부트를 이해해야 하는 이유를 설명합니다. 혼란스러울 수 있는 컨테이너라는 개념도 자세히 다룹니다.

2. 독립실행형 애플리케이션

스프링 부트의 특징 중의 하나인 독립실행형(standalone) 애플리케이션은 어떻게 가능한지를 직접 독립실행형 서블릿 애플리케이션, 독립실행형 스프링 애플리케이션을 만들어보면서 살펴봅니다. 이를 통해 스프링 웹 기술이 어떤 방식으로 만들어졌는지, 그 과정에 스프링 컨테이너는 어떻게 사용되는지도 알아봅니다.

3. Dependency Injection

스프링하면 DI를 빼놓을 수 없죠. DI의 개념과 스프링이 어떻게 DI를 지원하는지, 테스트에는 어떻게 적용되는지 등을 살펴봅니다. 만들고 있는 코드에 DI를 적용할 수 있도록 스프링 컨테이너를 이용해봅니다. DI를 이용한 데코레이터와 프록시 적용에 대해서도 살펴봅니다.






4. 자동 구성 기반 애플리케이션

스프링의 구성 정보(configuration metadata)의 종류를 살펴보고, 스프링 부트에서 이를 어떻게 다루는지에 대해서 설명합니다. 스프링 부트가 도입한 자동 구성(auto configuration)과 개발자가 만드는 유저 구성(user configuration)에 대해서 살펴봅니다. 스프링 부트로 개발한 애플리케이션의 구조를 이해할 수 있게 됩니다. 스프링 부트의 자동 구성이 스프링의 다양한 기술을 이용해서 어떻게 만들어졌는지를 실제 개발을 통해서 확인할 수 있습니다. 스프링 부트가 활용하는 다양한 스프링 애노테이션 활용법도 익히게 됩니다.

5. 조건부 자동 구성

스프링의 @Conditional 조건부 빈 등록 기술을 스프링 부트가 자동 구성에 어떻게 활용하고 있는지를 살펴봅니다. 여러 가지 조건을 다르게 해서 애플리케이션 구성 정보가 달라지는 것을 직접 체험할 수 있습니다. 스프링 부트에 직접 빈 설정을 넣었을 때 자동 구성에 어떤 영향을 미치는지도 알아봅니다.




6. 외부 설정을 활용하는 자동 구성

스프링 부트의 편리한 자동 구성이 개발을 너무 경직되고 일방적인 방식으로 제한하지는 않습니다. 스프링 부트가 제공하는 기술을 쉽고 유연하게 커스터마이징하는 외부 설정 활용법을 직접 구현을 통해서 살펴봅니다. 스프링의 Environment 추상화와 프로퍼티 소스의 적용 우선순위, 치환자(placeholder) 사용법에 대해서도 알아봅니다. application.properties에 나열된 수 많은 프로퍼티들이 자동 구성 빈과 어떻게 연결되는지, 어떤 단위로 그룹핑 되는지도 알 수 있습니다.

7. 스프링 JDBC 자동 구성 개발

스프링 JDBC 기술에 대한 자동 구성을 직접 설계하고 구현해봅니다. 이를 통해 스프링 부트에 적용된 자동 구성의 구조를 파악할 수 있는 전략을 배울 수 있습니다. 스프링 부트처럼 여러 가지 선택지를 두고 설계하는 방법, 그리고 조건에 따라 적절한 기능이 자동 구성을 통해서 적용되는 것을 실제 코드를 만들면서 체험할 수 있습니다.



8. 스프링 부트 자세히 살펴보기

지금까지 직접 만들어 온 스프링 부트와 유사한 코드를 이제 스프링 부트로 전환해도 여전히 애플리케이션 코드가 동일하게 동작하는 것을 확인합니다. 이제 스프링 부트로 개발할 때 그 아래서 어떤 일이 일어나는지가 머릿속에 그려질 수 있게 됩니다. 스프링 부트가 제공하는 방대한 자동 구성에 치이지 않고, 차근차근 분석하는 방법을 배웁니다. 그리고 스프링 부트 코어와 스프링 웹, JDBC에 등장하는 자동 구성 코드를 분석해봅니다.


수강 전 참고 사항 📢

실습 환경

  • 운영 체제 및 버전(OS): 윈도우와 맥, 리눅스 등의 자바 기술을 사용할 수 있는 데스크톱 운영체제가 필요합니다.
  • 사용 도구: JDK 11 버전을 설치하고 자바 프로젝트를 개발, 실행할 수 있는 개발 환경인 IDE가 필요합니다.
    • 강의에서는 IntelliJ IDEA Ultimate 버전을 사용합니다.
    • 무료로 이용할 수 있는 IntelliJ IDEA Community 버전이나 STS(SpringSource Tool Suite)를 사용해도 됩니다.

학습 자료

  • 깃허브에서 예제 코드를 받아볼 수 있습니다. 각 수업 단계마다 커밋되어 있어서 원하는 부분을 체크아웃해서 살펴볼 수 있습니다.
  • 강의에 사용하는 슬라이드를 130페이지 분량의 슬라이드를 PDF 파일로 다운받을 수 있습니다.
  • 각 수업에서 설명하는 내용에 대한 간략한 설명과 참고 자료 등을 정리한 강의 노트를 섹션마다 PDF 형태로 제공합니다. 이는 계속 업데이트될 수 있습니다.

선수 지식 및 유의 사항

  • 자바 언어로 작성되는 코드를 이해할 수 있을 만큼의 언어 지식이 필요합니다. 자바5의 애노테이션이나, 익명 클래스, 자바 8의 람다식과 스트림의 사용법을 숙지해주세요.
  • 전체 흐름이 궁금하시면 일단 예제를 따라 하지 않고 영상을 모두 시청해도 좋습니다. 이후에 다시 차근차근 예제를 따라 해보고, 스스로 코드를 개선하거나 응용해보는 것을 추천합니다.
  • 스프링 부트 3.0으로 예제를 업그레이드하는 방법에 대한 영상을 업데이트할 예정입니다.
  • 추가적인 설명이 필요한 부분이 있으면 관련된 영상도 추가될 것입니다.

예상 질문 Q&A 💬

Q. 왜 스프링 부트의 동작 원리를 이해해야 하나요?

사용하는 모든 기술의 동작 원리를 알아야 하는 건 아닙니다. 그런데 스프링 부트는 동작 원리를 알고 나면 더 잘 사용할 수 있습니다. 스프링 부트가 많은 작업을 보이지 않게 자동으로 처리해주는데 이를 이해하면 스프링 부트가 제공하는 기능을 놓치지 않고 활용할 수 있습니다. 또, 이를 확장해서 애플리케이션에서 필요한 작업을 수행할 수 있습니다. 스프링 부트에 담긴 스프링 프레임워크의 활용법을 익히는 것도 스프링 기반의 애플리케이션을 개발하는 데 도움이 됩니다.

Q. 스프링 프레임워크를 잘 모르는데 강의를 들을 수 있을까요?

스프링 부트가 사용하는 스프링 프레임워크의 기술을 소개하면서 스프링의 핵심 개념도 설명합니다. 스프링 컨테이너의 동작 방식과 DI, 적용할 수 있는 디자인 패턴까지 다룹니다. 물론 이 강의를 보고 나서 관심 있는 스프링 프레임워크를 기술이나 동작 원리를 더 깊이 공부하는 것이 좋습니다.

Q. 강의에서는 스프링 부트 2.7을 사용하는데 최근에 나온 3.0를 사용할 때도 도움이 되나요?

강의에 나온 모든 예제는 라이브러리 버전과 일부 변경된 패키지 이름만 수정하면 스프링 부트 3.0에서도 동작합니다. 스프링 부트 3.0에서 예제를 마이그레이션 하는 방법도 강의에서 다룹니다.


지식공유자 소개 ✒️

이력 사항

  • 실무 개발 30년, 스프링 프레임워크 개발 경력 20년의 경험을 가지고 있습니다.
  • 제조, 물류, 금융, 이동통신, 커머스, 교육, 서비스 도메인에서 다양한 시스템과 서비스를 개발해왔습니다.
  • 토비의 스프링 3.0과 3.1 책을 저술했습니다.
  • 한국 스프링 사용자모임(KSUG)을 설립했고, 개발자 커뮤니티에서 오랜 기간 활동했습니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 스프링 부트를 더 잘 이해하고 자유롭게 활용하고 싶은 분

  • 스프링 부트를 사용하고 있지만 스프링에 대해서는 잘 모르겠다고 느끼시는 분

  • 스프링 부트를 효과적으로 학습하고 싶은 분

  • 나만의 스프링 부트 모듈을 만들어 사용하고 싶은 분

선수 지식,
필요할까요?

  • 자바 언어(자바 8+)

안녕하세요
토비입니다.

호주에 살고 있는 소프트웨어 개발자입니다. 30년간 다양한 분야의 시스템과 서비스를 개발해본 경험이 있습니다. 

스프링 프레임워크와 관련 기술을 좋아하고 JVM 기반 언어를 주로 사용합니다.

한국스프링사용자모임(KSUG)을 설립하고 활동했고, 토비의 스프링이라는 책을 쓰기도 했습니다.

개발과 관련된 다양한 주제에 관해 이야기하는 것을 좋아합니다. 

 

 

커리큘럼

전체

68개 ∙ (11시간 6분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!