BEST
개발 · 프로그래밍

/

백엔드

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

스프링 프레임워크가 만들어지는 과정을 살펴보면서 스프링을 잘 이해하고 사용하는데 도움이 되는 원리를 찾아봅니다. 이를 통해 개발자가 작성하는 애플리케이션의 코드는 어떻게 만들어져야 하는지도 살펴봅니다.

(5.0) 수강평 90개

수강생 2,166명

Thumbnail

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

이런 걸
배워요!

  • 스프링 기술의 핵심 원리

  • 객체지향 설계 원칙과 디자인 패턴

  • 테스트를 이용한 코드의 검증 방법

  • 리팩터링을 통한 코드의 지속적인 개선

  • 의존관계 주입, 템플릿, 예외, 서비스 추상화

스프링 구루(Guru)의 귀환!
14년만에 돌아온 토비의 스프링6

오래 전 출간되어 많은 개발자들에게 사랑을 받았던 <토비의 스프링 3>이 14년 만에 돌아왔습니다!

<토비의 스프링 3.1> 책에서 다룬 핵심 내용은 그대로 담아, 스프링 6와 자바 최신 버전에 맞게 재구성한 강의입니다. 특히 최근에 많이 사용되는 접근 방식과 기술을 담은 예제 코드를 중심으로 최신 스프링 프레임워크를 깊이있게 경험할 수 있습니다.


혹시 이런 고민을 하고 있지 않나요? 🤔

스프링이 매우 방대하고 다양한 기술을 제공하고 있다보니, 매번 필요한 기능을 찾아 사용방법을 익히는데 시간을 많이 투자하게 돼요.

스프링이 유연한 프레임워크인 만큼 다양한 선택지를 제공하는 건 좋지만, 최적의 방법을 찾기 위해 많은 것을 고려하는 것이 부담돼요.

스프링 프레임워크 기능이 잘 작동하는지 쉽게 검증하거나, 예상치 못한 문제에 좀 더 빠르고 정확하게 대응하는 능력을 키우고 싶어요.


사용 방법이 아닌
동작 원리를 배워야 하는 이유

스프링유연하고 확장성이 뛰어난 프레임워크입니다. 개발하는 애플리케이션의 특성에 따라서 필요한 기술과 스프링의 기능을 선택하는 것이 중요하고, 때로는 개발하는 애플리케이션에 맞게 스프링이 제공하는 기능을 확장해야 할 필요도 있습니다. 물론 스프링 부트의 도움을 받으면 손쉽게 개발을 시작할 수 있지만, 스프링을 보다 효과적으로 사용하기 위해서는 기본적으로 스프링이 제공하는 기술의 동작 방식과 개발 원리를 알고 있는 것이 매우 유리합니다.

더 중요한 것은 스프링이 자바 엔터프라이즈 및 서버 개발을 위한 베스트 프랙티스과 유연한 개발 원칙을 설명하는 서적에서 시작되었다는 점입니다. 즉, 스프링은 태생부터 객체지향 설계 원칙과 패턴, 우수한 개발 방식을 고려하여 개발된 프레임워크입니다. 이러한 이유로 스프링의 기본 원리를 스프링을 사용하는 애플리케이션 코드에 적용하는 것은 당연한 접근이며, 바로 이것이 스프링의 근본 원리부터 학습해야 하는 이유입니다.

좋은 스프링 개발자가 되기 위한
사고의 힘을 키우다

강의는 리팩토링으로 좋은 코드를 만드는 과정을 거치며 스프링의 원리를 이해할 수 있도록 구성하였습니다.

단순한 예제이지만 강의에서 다루는 코드의 변화에 주목해주세요. 현재 코드에 대해서 어떤 질문을 하고, 어떤 문제제기를 하고, 어떤 시도를 하는지. 그렇게 리팩터링 된 코드가 주는 효과가 무엇이고 스프링 스스로 어떻게 적용했는지 살펴볼 수 있습니다.

또한 스스로 코드를 다듬고 개선하는 과정에서 배우는 스프링의 원칙과 패턴은 수강생 여러분에게 좀 더 깊이있게 다가올 것이라고 생각합니다. 강의를 통해 스프링 개발자에게 무엇을 요구하고 어떤 코드를 기대하는지 인사이트를 얻는 시간이 되기를 바랍니다.

학습 내용 📚

강의는 스프링의 방대한 기술을 좀 더 효과적으로 학습하고 이해하는데 도움이 될 만한 주요 원리들을 설명하고, 그 동일한 원리를 우리가 개발하는 애플리케이션 안에도 적용하는 방법에 대해 함께 설명합니다.


오브젝트와 의존관계

스프링은 자바를 이용해서 객체지향 설계와 구현, 개발 원리, 디자인 패턴을 충실하게 적용해서 그 효과를 얻을 수 있는 코드를 만드는 것을 도와주는 프레임워크입니다.

가장 핵심이 되는 의존관계 주입(Dependency Injection)과 이를 지원하는 스프링 컨테이너의 동작원리를 객체지향적인 코드를 작성하는 과정을 통해서 살펴봅니다.

스프링이 제공하는 가장 기본적이면서 중요한 기능이 무엇인지, 그리고 이를 잘 활용하려면 애플리케이션 코드를 어떻게 작성해야 하는지 예제 코드를 개선하면서 알아봅니다.


테스트

테스트를 안 만들거면 왜 스프링을 쓰는 거죠? 스프링이 주는 많은 기능과 혜택이 있지만, 개발하는 코드에 대한 테스트를 쉽고 편하게 작성할 수 있고, 테스트 하기 어려운 대상을 손쉽게 테스트 할 수 있는 구성이 가능하게 만들어주는 것은 스프링이 제공하는 가장 큰 혜택입니다.

애플리케이션 코드에 대한 테스트 작성의 다양한 방법을 알아보고, API를 이용하는 코드에 대한 테스트, 컨트롤하기 어려운 시간 테스트 등은 어떻게 해야하는지 살펴봅니다.

기술을 익힐 때 유용한 학습 테스트도 다룹니다.


템플릿

오브젝트 의존관계의 유연성은 스프링이 제공하는 각종 템플릿을 활용하는 방법으로도 체험할 수 있습니다. 디자인 패턴과 스프링 컨테이너를 함께 활용해서 재사용성과 확장성이 뛰어난 템플릿과 콜백을 만들어보고, 스프링에 적용된 템플릿도 살펴봅니다.

고정된 워크플로우를 가지는 복잡하고 반복적인 코드를 템플릿을 이용해서 간결하게 만드는 방법을 배울 수 있습니다.


예외

예외를 처리하는 코드의 종류와 문제점, 지켜야 할 기본 원칙을 먼저 설명합니다. DB 데이터 액세스 기능을 이용하는 코드에서 발생하는 예제를 다루는 스프링의 예외 처리 방식을 알아보고, JPA 코드를 만들고 스프링의 DataAccessException이 어떻게 동작하는지 확인해봅니다.

체계적인 예외 구조를 만들고 적절한 예외 처리 방법을 설명합니다.


서비스 추상화

서비스의 종류와 특징을 먼저 살펴봅니다.

기술을 제공하는 인프라 서비스를 이용할 때 애플리케이션 서비스 코드가 특정 기술에 의존하지 않도록 만들어주는 스프링의 서비스 추상화를 트랜잭션의 예를 통해 살펴봅니다.

특정 기술에 매이지 않는 추상화된 코드이지만 비즈니스 로직과 함께 등장하는 기술 코드를 분리하는 프록시를 이용하는 효과적인 방법도 설명합니다.


스프링 학습 방법

스프링의 기본 원리를 이해하고 이를 적용하려면 스프링 프레임워크와 함께 애플리케이션을 구성하는 다양한 방법을 익히고 스프링이 제공하는 라이브러리 등을 효과적으로 활용할 수 있어야 합니다.

스프링 기술을 학습하는 기본 전략과 학습해야 할 기술의 종류를 설명합니다.


수강전 참고사항

실습환경

  • 운영 체제 및 버전(OS): 윈도우와 맥, 리눅스 등의 자바 기술을 사용할 수 있는 데스크톱 운영체제가 필요합니다.

  • 사용 도구: JDK 17 또는 JDK 21 버전을 설치하고 자바 프로젝트를 개발, 실행할 수 있는 개발 환경인 IDE가 필요합니다.

    • 강의에서는 IntelliJ IDEA Ultimate 버전을 사용합니다.

    • 예제 실습에는 IntelliJ IDEA Ulimate 버전 또는 Community 버전을 사용할 수 있습니다.

    • Eclipse, STS 등의 자바 IDE를 사용할 수 있으나 IntelliJ IDEA 사용을 적극 권장합니다.

학습자료

  • 깃허브에서 예제 코드를 받아볼 수 있습니다. 각 수업 단계마다 커밋되어 있어서 원하는 부분을 체크아웃해서 살펴볼 수 있습니다.

  • 강의에 사용하는 슬라이드를 230페이지 분량의 슬라이드를 PDF 파일로 다운받을 수 있습니다.

  • 각 수업에서 설명하는 내용에 대한 참고 자료를 담은 강의 노트를 PDF 형태로 제공합니다. 참고 자료 강의 노트는 수강생 분들의 질문 등을 참고해서 지속적으로 업데이트할 계획입니다.

선수지식 및 유의사항

  • 자바 언어로 작성되는 코드를 이해할 수 있을 만큼의 언어 지식이 필요합니다. 적어도 자바5의 애노테이션이나, 익명 클래스, 자바 8의 람다식의 사용법을 숙지해주세요. 이후 자바 버전에 추가된 문법이나 자바 클래스 라이브러리 사용법 등은 강의에서 간단히 설명드립니다. 자바 17 또는 21버전까지 추가된 문법을 익히시면 도움이 될 것입니다.

  • 전체 흐름이 궁금하시면 일단 예제를 따라 하지 않고 영상을 모두 시청해도 좋습니다. 이후에 다시 차근차근 예제를 따라 해보고, 스스로 코드를 개선하거나 응용해보는 것을 추천합니다.


  • 추가적인 설명이 필요한 부분이 있으면 관련된 영상은 추가할 계획입니다.

예상 질문 Q&A

Q. 토비의 스프링 3 또는 3.1 책을 가지고 있는데 책을 먼저 보고 강의를 봐야할까요? 혹은 반대로 학습하는 것이 좋을까요? 혹시 강의를 본다면 굳이 책은 보지 않아도 될까요?

아직 책을 구입하지 않거나 공부하지 않으셨다면 강의를 먼저 보는 것을 추천드립니다. 예제 코드가 최근 많이 사용되어지는 방식과 기술을 이용해서 작성되어 있어서 오래 전(2010-20211)에 출간된 책을 보는 것보다 이해하기 쉽습니다. 또, 함축적으로 꼭 알아야할 내용을 집중해서 설명하고 있기 때문에 강의를 먼저 보시는 것이 좋습니다.

강의 내용을 충분히 공부하신 뒤에 토비의 스프링 책을 보시는 것도 좋습니다. 책에는 보다 상세하게 많은 내용과 설명이 담겨 있습니다. 상세 기술 설명이 담긴 2권은 아니더라도, 1권은 강의 내용을 기억하면서 다시 읽으셔도 도움이 될 부분도 많이 있습니다. 하지만 다른 학습할 게 많으시다면 굳이 책을 보지 않으셔도 괜찮습니다. 그래도 참고를 위해서 책을 구입하시는 것은 나쁘지 않겠지요. 😄

지식공유자 소개

이력 사항

  • 한국과 미국을 거쳐, 현재는 호주에서 컨설턴트와 개발자로 일하고 있습니다.

  • 실무 개발 31년, 스프링 프레임워크 개발 21년의 경험을 가지고 있습니다.

  • 제조, 물류, 금융, 이동통신, 커머스, 교육, 서비스 도메인에서 다양한 시스템과 서비스를 개발해왔습니다.

  • 토비의 스프링 3.0과 3.1 책을 저술했습니다.

  • 한국 스프링 사용자모임(KSUG)을 설립했고, 개발자 커뮤니티에서 오랜 기간 활동해오고 있습니다.


이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 스프링을 더 잘 이해하고 활용하고 싶은 분

  • 스프링을 실무에서 사용하고 있는 분

  • 유연하고 확장성이 뛰어난 개발 방법을 익히고 싶은 분

선수 지식,
필요할까요?

  • 자바 언어

  • 웹 API와 DB 프로그래밍에 대한 이해

안녕하세요
토비입니다.

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

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

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

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

 

 

커리큘럼

전체

58개 ∙ (12시간 27분)

수업 자료

가 제공되는 강의입니다.

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

수강평

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