강의

멘토링

로드맵

Inflearn brand logo image
BEST
개발 · 프로그래밍

/

백엔드

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

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

(5.0) 수강평 161개

수강생 2,774명

  • 토비
토비의스프링
스프링_원리
저자 직강
JavaSpring

먼저 경험한 수강생들의 후기

이런 걸 배울 수 있어요

  • 스프링 기술의 핵심 원리

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

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

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

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

스프링 구루(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 프로그래밍에 대한 이해

안녕하세요
입니다.

13,567

수강생

736

수강평

341

답변

5.0

강의 평점

7

강의

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

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

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

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

 

 

커리큘럼

전체

58개 ∙ (12시간 27분)

해당 강의에서 제공:

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

수강평

전체

161개

5.0

161개의 수강평

  • parksangdonews8226님의 프로필 이미지
    parksangdonews8226

    수강평 17

    평균 평점 4.8

    5

    100% 수강 후 작성

    淡白で、講義の時間を増やそうとする修飾語句と空白でいっぱいのオンライン講義用の言い方が一切ない。おそらく、大部分の受講生が講義をより見ると、川の流れに空き隙がないことを最も大きく感じられると思われる。 最後まで、スプリングの説明が始まらなかった。感心が混ざっている。 非常に簡単な例から始めて、クラスとオブジェクトを説明し、関係を通してより快適でスタイリッシュな方法を探す旅をそのまま見せる。多くのパターンを目の前に置いて暗記式で学んだ過去の時間に涙が出る。 むしろ、変化にどのようなパターンを書くべきかを心配することができるようになる。 まるで…生徒たちがクカナマ・アル・アペニー…(K Ca Na Mg Al Zn Fe Ni Sn Pb H Cu Hg Ag Pt Au)銀(朝鮮王志保)を覚えているように、開発本を置いてSOLIDを覚えてはいけない。できなかった内容を直接必要な機能を作り出すコード変更過程で説明するのに理解できない理由がなかった。 開発者なら、本人のコードを素早く信頼性を高めるためにテストを進める必要がありますが、テストが必要な理由と方法を2時間にわたって見せてくれます。時期に、本講義ではちょうど必要なだけ見せてくれる。テストは、どのように実行し、どのように何を検証するかがより重要であるというラインでテスト部分を仕上げます。 コードの再使用の必要性は誰にも話し過ぎることはありませんが、どのコードを再使用する必要があるのか​​、そして変化が必要な部分はどのように区別するのかを示し、これをテンプレートにする過程を見せてくれます。これは、すべてのプロセスがスプリングでどのように完成しているかを示しています。 初心者のための講義ではありませんが、例外を説明したいと思っていました。彼らが実際にこれまで学んだ概念を網羅した技術の総合という仕上げをする。 草食を通じてアクセスし、機能が追加されても、最終的にオブジェクトとの関係、パターンとテンプレート、そしてテストに基づく信頼性の確保と抽象化による依存性の脱皮まで..意志が見える講義だった。 インフラの仕事をしましょう~~ 相手のインフラストラクチャアカウントのメールアドレスを知っている場合は、贈り物をする機能が必要です!!!! 高コストを出して少数だけ聞く講義を拒否し、インフラですべての開発者のために2年以上の時間の間に無林秘法書を作り出したトビー様に感謝を申し上げ、後期を終えて.. .皆さん!! # 1等できたのに… 100%受講しなくて受講坪残した人たち 全て反則..悪い!! #ドメイン部分の講義クリップだけを見ても、この川の全体のコストをカバーするのに十分なビルドアップが支えられている。

    • tobyilee
      지식공유자

      最初の100%受講後作成文なので感動です。良く評価していただきありがとうございます。 ところで、受講評は何か残したいときに自由に作成してください。 :) インフラに講義プレゼントする機能は私もあればいいと思ったのにないなんて残念ですね!

    • こんにちは。Inflearnです! 良い講義を周りの方に共有したいと思われていたなら、Inflearnの講義プレゼント機能で直接プレゼントできるようになりました! 受講レビューから感じられる温かい心が、知人、同僚、周りの方の成長に繋がることを願っています。 🎁 講義プレゼントに関するお知らせ > https://www.inflearn.com/notices/1649873 ありがとうございます。

  • choicore님의 프로필 이미지
    choicore

    수강평 2

    평균 평점 5.0

    5

    59% 수강 후 작성

    先発隊です。私はトビーの春本を会社と家にそれぞれ備えています。本が出てからもう14年になりましたが、まだスプリングの動作原理とスプリングが提供する抽象化を理解するのに大きな助けになります。 講義を発売するとすぐに始まりました。 サンプルコードを通じて機能要件を満たす状況で問題点を提示し、デザインパターンと設計原則を適用していきながら変更可能なコードに変える過程があります。簡単に理解でき、没入感のある受講しました。 途中で投げてくださるキーワードをただ渡すことなく探してみることをお勧めします。 スプリングは20年以上にわたり発展してきましたが、その基盤技術は依然として堅牢であるという点で、オブジェクト指向設計の大変さを感じます。 本でも、今回の講義でもトビ様は魚を捕まえる方法を教えてくれるようです。 トビー様が大好きです。

    • tobyilee
      지식공유자

      スプリングが変わらずしっかり守っているそのインフラと、そこに反映された原則が時間がかなり長く流れても変わらず維持されているというのが私にとっても大きな感動です。初受講ありがとうございます。

    • zin
      지식공유자

      先発隊の現状はどうなりますか? 受講完了後の後期も気になりますね!

    • ああ! 受講を通して多くの準備をして、なめらかな講義を作っていたと感じました。 無理な問題ではなく問題を提示して次曲次曲ボトムアップされて解決していく過程でどのように解放するか? こうしないか?楽しかったです。 普段私が知らないコード、あるいは設計が羨望の対象となる部分を警戒しなければならないと思いますが。 トビー様の知識伝授に力を入れて情報の海で弁別力をもって受け取ることができる根拠がたまっているようです。 おもしろくてお得に見ました。 P.S 今回のインフコンのときにほっとしたかったのですがㅜㅜインフコン落ちました天추のひとつです。

  • hyunwookim11085590님의 프로필 이미지
    hyunwookim11085590

    수강평 4

    평균 평점 5.0

    5

    31% 수강 후 작성

    いったん動画講義がADHDを持った私が一日で30%を見るほど吸引力がありました。 SOLIDの原則やオブジェクト指向など、ジュニア開発者に多少抽象的に近づく概念も分かりやすく解いてくれ、例とともに説明してくれて母親が連想されました。 今回の講義で確かに知っているマエストロの方々は、むしろ文章が簡潔で淡白であることを感じました。 オブジェクトのチョ・ヨンホ様のオフライン講義を聞いた時も感じた感動なのに、トビー様の講義も台本を用意されたようだという勘違いがあるほど、流れが自然で論理力を持った文章が快適でした。 もちろん、開発の勉強には王道はないと思いますが、この程度のコンパスといえば道を失わないようですね。自信を持ってアクセスできるようになりました。 そして余談で本だけに触れて予想外の部分ですが、トビ様の声が集中力を高め、没入させる力がありました。

    • tobyilee
      지식공유자

      どんな点が良かったのか気になりますね。良く評価していただきありがとうございます。スプリングをうまく活用する素敵な開発者として働く姿を楽しみにしています。

    • tobyilee
      지식공유자

      詳しい受講評も書いてくれてありがとう。

  • modelso9312님의 프로필 이미지
    modelso9312

    수강평 1

    평균 평점 5.0

    5

    34% 수강 후 작성

    まだ全部聞くことはできませんでしたが、これまで聞いただけでも修能1打講師よりさらに説明を上手くするという考えを持つようになり、急に先に受講評を残します。常に "スプリング" を勉強する際に通っていた文でしか説明されていないものを正確に誰が聞いても分かりやすく解いて動作する原理を理解させてくれるのが私の考えにはスプリングが水能種目だったというなら一打講師しておられたようです。 その程度で正確に脱毛にDI(理解しようとしなくても理解が注入される)をしてくださるようです。 このレッスンを見てからSpring 3.1も読んでみたいと思います。 書かれている硬いのが嫌いで先延ばしだけでしたが、今回の機会にちゃんとした勉強をしてみたいという気がしますねㅎㅎ いつも感謝しています。 受講評を修正できるとしたら、すべて読んで後期追加するようにします。 どうぞ健康になって良い講義を作っていただきたいです。

    • tobyilee
      지식공유자

      わかりやすくなると言ってくれてありがとう。残りの内容もお得であればと思います。本は量が多いですが、できるだけ親切に解いて説明しようとしました。限られた時間の講義で作るためにもっと説明したくなかった内容がありますが、本にはもっと説明を入れようとしましたので、余裕があれば1冊程度はご覧になることをお勧めします。

    • 100% 受講後 講義の進行も100%満たしてからもやはり聞いて良かったという考えを着実にしながら講義を聞いたようです。 講義を聞きながら感じるのがご飯を食べるものと比べると、料理を醸し出して食べると言って食べるだけではない材料はこんなに必要で、どのように調理しなければならないし、それを通してこんなに組み合わせて食べればおいしい料理を作れるだろうという感じをたくさん受けたこと同じです。 開発関連で初めてのスタートを間違えてレガシープロジェクトにメンテナンスするだけでインフラというところで講義を通じてトビ様も知り、スプリングについてさらに一歩近づくことができたようで、インターネットに浮かぶグローだけ見てはこう理解できるないほど確実に理解させていただきありがとうございます。 他の講義もたくさん作っていただきたいです。 本1冊をすべて読んでからスプリングリファレンスも一度読んでから再び講義復習兼聞いてみようと思います。 もしその時になればもう一度返事で私の感じた点を残してみるよう努力します。 追加でインフコンに当たって今回直接お会いできたら本当にいいようです。 良い川のありがとう。

  • daejoon님의 프로필 이미지
    daejoon

    수강평 58

    평균 평점 4.9

    5

    100% 수강 후 작성

    より良い開発者になるのを手伝ってくれてありがとう。 'トビーの春3.0'ハードカバーをまだ読んでいます。 初めて読んだときは、1章から8章までの内容をめくって実務的な部分だけ見たようです。 しかし、時間が経つにつれて、むしろ前の部分の1枚から8枚までを見直しました。 講座はこの前半の内容を中心に、スプリング実装の難しい部分を最大限排除し、原理を説明する方法で進められました。 トビー様の特有の原理を覚醒させるためのビルドアップ方式の説明も依然として有効でした。 本を通しては感じられなかった部分ですが、講座を通して感じた点は次のとおりです。 - コードを変更の理由と時期によって分離しなければならない点 - リソース解放が必要なコードを書くとき、Openと同時にCloseする良い習慣 - IntelliJ IDEAからキャメルケースでインテリセンスを動作させる方法 - Thread.sleepを便利に使用できるTimeUnitクラスの使い方 - DIP(Dependency Inversion Principle)を基準にパッケージを分離すれば依存性を減らすことができる点 - Clock.fixedを使用して環境を調整する方法 - Spring Configuration構成時に便利に使用できるダブルブラケット技術 事実上に挙げた学んだことは、追加の部分であり、 講座を見ながら、私の頭の中には、継続して&#x27;どのようにメンテナンスが楽な構造を作るのか&#x27;への悩みでした。 このような部分が講座をみなしても完全には解決されませんでしたが、一定の部分方向性を提示していただき、今後さらに一生懸命悩んでみましょう。 ありがとうございます。 最後に、コースごとに体調が違うのが感じられました。 健康です。 もう一度、より良い開発者になるのを手伝ってくれてありがとう。

    • tobyilee
      지식공유자

      最初の本から見ましたね。役に立ったのは嬉しいですね。良い評価ありがとうございます。

배움이 더 쉬워지는 9월의 할인 중 (3일 남음)

₩10,769

24%

₩121,000

토비님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!