강의

멘토링

로드맵

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% 수강 후 작성

    It is plain. There is absolutely no online lecture tone full of modifiers and empty words to extend the lecture time. It is plain and thick, compressed, filled, and organized through several rehearsals. It is clearly different in intensity from other lectures that jump around to see quickly. I think most students will feel the most when they watch the lecture that there are no gaps in the lecture flow. The explanation of Spring did not start until the end. However, after listening to it all, I learned the core of how Spring works through the beginner's guide to the development ecosystem. The target audience includes everyone from beginners to intermediate and above. There are cries of "Beginner!!" and exclamations of "This kind of content??". Starting with a very simple example, it explains classes and objects, and shows the journey to find a more convenient and sophisticated method through relationships. At some point, the concerns that started in order to respond to change lead to design patterns. I shed tears over the past time when I opened the design pattern book and memorized many patterns in front of me. Rather, I can think about which patterns to use for changes. By the time we reach the entrance of the design pattern... Spring proves that it is a framework that easily supports DI by organizing the dependency inversion principle. Just like... students memorize K Ca Na Mg Al Zn Fe Ni Sn Pb H Cu Hg Ag Pt Au or memorize Taejeong Taese Mundan Se Yeseong Yeon Jung In Myeong Seong Gwang In Hyo Hyeon Sook Gyeong Gyeong Jeong Sun Heon Cheol Go Sun Eun (Joseon King's posthumous name), they memorize SOLID with a development book. Likewise, since I memorized it as if I was memorizing it for a test, there was no reason not to understand the content that I didn't understand as the code change process that directly creates the necessary function. Let's exclaim in admiration. As a developer, you need to conduct tests to quickly draw your own code and increase reliability, but this lecture shows you the reason and method of testing for 2 hours, and when you are tired of watching lectures that are full of content that can only be found in manuals under the title of TDD, this lecture shows you just what you need. Rather than talking about the meaning of test code and what is the real test code, the test part is concluded with the line that how to execute the test and how to verify what is more important. The necessity of code reuse cannot be overstated, but it shows which code should be reused and how to distinguish the parts that need to be changed, and the process of creating this as a template. At this time, you can naturally see the concept of callback with your eyes, and it shows how all of this process is completed in Spring. I was curious because it was not a lecture for beginners, but it explained exceptions, and it added a request to the request, explaining the precautions for exception handling, and at the end, it shows the concept and entity of abstraction, and various abstracted functions in Spring. And it concludes that these are actually the sum of the technologies that encompass the concepts learned so far. It was a lecture that showed the intention to put almost everything a developer needs to know into the title of the Spring lecture, approaching it through the beginner's course, and even if functions are added, it eventually covers objects and relationships, patterns and templates, and securing reliability based on tests, and even abstraction to escape dependencies. This is a great lecture that you should carry around with you and recommend to your loved ones as a gift. Let's do some Infraon work~~ There should be a function that allows you to send gifts if you know the email address of the other person's Infraon account!!!! I would like to thank Tobi, who refused to pay a high price for a lecture that only a few people can attend and created a book of martial arts secrets for all developers at Infraon for over 2 years, and I will end this review.. . Everyone!! Run here!!! # I could have been 1st... Everyone who left a review without taking the class 100% is cheating.. Bad!! # Even if you watch just one lecture clip from the domain section, the perfect build-up is enough to cover the entire cost of this lecture. You will regret not watching the other lecture clips. Hwa-ryong-jeom-jeong

    • tobyilee
      지식공유자

      I am touched because this is my first 100% course review. Thank you for your positive review. However, you can write the course review freely whenever you want. :) I also thought it would be nice to have a lecture gifting function on Infraon, but it's a shame that it doesn't exist!!

    • Hello. This is Inflearn! Wish to share good courses? Now, with Inflearn's Course Gifting feature, you can gift them directly! May the warm feelings from reviews foster growth for friends, colleagues, and those around you. 🎁 Course Gifting Notice > https://www.inflearn.com/notices/1649873 Thank you.

  • choicore님의 프로필 이미지
    choicore

    수강평 2

    평균 평점 5.0

    5

    59% 수강 후 작성

    It's the advance team. I have Toby's Spring book at my office and at home. It's been 14 years since the book came out, but it's still a great help in understanding the working principles of Spring and the abstractions it provides. I started watching it as soon as the lecture was released, but I was so obsessed that I kept clicking on the next lecture button and it was time to go to bed. There's a process of presenting problems in a situation where functional requirements are satisfied through example code, and transforming it into changeable code by applying design patterns and design principles. It was easy to understand and I was able to take the class with great immersion. I recommend that you look up the keywords that are thrown out here and there instead of just skipping them. Although Spring has been developing for over 20 years, I can feel the greatness of object-oriented design in that its underlying technology is still solid. In the book and in this lecture, Toby seems to be teaching us how to catch fish. I love Toby.

    • tobyilee
      지식공유자

      I am also very impressed by the fact that the foundation that Spring has maintained without change and the principles reflected in it have remained unchanged for quite some time. Thank you for your first review.

    • zin
      지식공유자

      How is the status of the advance team? ㅎㅎ I'm also curious about the review after completing the course!

    • Ah! I finished the course right after writing the course review, so I'm leaving a completion review. I felt that you prepared a lot throughout the course to make it smooth. It was fun to think about how you would solve it by presenting a problem that wasn't forced and solving it step by step from the bottom up. Wouldn't you do it like this? While thinking about this, I checked if Toby's thoughts and the direction I wanted to solve it overlapped(?). I usually think that I should be careful about codes that I don't know or parts that become objects of envy for designs. Thanks to Toby's knowledge transfer, I think I'm building up the basis for being able to receive information with discrimination in the sea of information. It was fun and informative. Thank you. I love you. P.S. I wanted to go to Infcon this year, but ㅜㅜ I failed Infcon. It's a regret of a lifetime.

  • hyunwookim11085590님의 프로필 이미지
    hyunwookim11085590

    수강평 4

    평균 평점 5.0

    5

    31% 수강 후 작성

    First of all, the video lectures were so engaging that I, who has ADHD, watched 30% of them in one day. Even concepts that seem somewhat abstract to junior developers, such as SOLID principles and object-oriented, were explained in an easy-to-understand manner with examples, which reminded me of a mother bird. In this lecture, I felt that the maestros who definitely knew the truth had concise and simple sentences. It felt like eating a well-prepared Korean meal. I felt the same way when I listened to Object's Cho Young-ho's offline lecture, but Toby's lectures were so natural and logical that I felt like he had prepared a script. Of course, I don't think there is a royal road to learning development. However, with this level of compass, I don't think I'll get lost. Also, the way he explains complex concepts in an easy-to-understand manner was a great help in my studies. Through this lecture, I was able to approach difficult concepts with confidence. And as a side note, this is something I didn't expect because I only read books, but Toby's voice had the power to increase concentration and immerse me. I really liked his calm yet powerful voice.

    • tobyilee
      지식공유자

      I'm curious to know what you liked. Thank you for your positive review. I look forward to seeing you working as a great developer who makes good use of Spring.

    • tobyilee
      지식공유자

      Thank you for writing a detailed course review.

  • modelso9312님의 프로필 이미지
    modelso9312

    수강평 1

    평균 평점 5.0

    5

    34% 수강 후 작성

    I haven't listened to the whole thing yet, but from what I've heard so far, I think he explains it better than the first-time college entrance exam instructor, so I'm leaving a review in a hurry. I think he would have been a first-time college entrance exam instructor if Spring had been a college entrance exam subject, because he explains things that were only explained in writing, so that anyone can understand the principles of operation. I think he's accurately DI (instilling understanding without trying to understand) in my head to that extent. After watching this lecture, I'm going to read Spring 3.1 carefully. I've been putting it off because I hate stiff writing, but I think I want to study properly this time. ㅎㅎ I'm always grateful. If I can edit my review, I'll read it all and add a review. I hope you stay healthy and create more great lectures.

    • tobyilee
      지식공유자

      Thank you for saying that you understood it well. I hope the remaining content was helpful. Although the book is large, I tried to explain it as kindly as possible. There are some things I wanted to explain more but couldn't because of the limited time in the lecture, but I tried to include more explanations in the book, so if you have time, I recommend reading at least one volume.

    • 100% course review Even after I filled 100% of the lectures, I still thought it was a good idea to listen to the lectures. While listening to the lectures, I felt that it was not like eating a meal because they prepared the food and told me to eat it, but that I needed these ingredients, how to cook it, and if I combined them and ate it, I could make a delicious dish. I started out with development and only maintained a legacy project, but through the lectures at Inflearn, I got to know Toby and I think I was able to get one step closer to Spring. I would like to thank you again for making it so clear that I couldn't understand it just by reading articles floating around on the Internet. I hope you make many other lectures. After reading all of the book, I'm going to read the Spring reference once, and then listen to the lectures again to review them. If that happens, I'll try to leave my thoughts in a reply. Additionally, if I win Infcon and can meet you in person this time, it would be really great. !! Thank you for the great lecture.

  • daejoon님의 프로필 이미지
    daejoon

    수강평 58

    평균 평점 4.9

    5

    100% 수강 후 작성

    Thank you for helping me become a better developer. I am still reading the hardcover edition of 'Toby's Spring 3.0'. When I first read it, I skipped over chapters 1 to 8 and only looked at the practical parts. However, as time passed, I ended up looking at the first part, chapters 1 to 8, again. The lecture focused on the first part, and explained the principles while excluding the difficult parts of Spring implementation as much as possible. Toby's unique build-up method of explaining the principles was still effective. Here are some things I didn't feel through the book, but I felt through the lecture: - The need to separate codes according to the reason and timing of change - A good habit of Opening and Closing at the same time when writing code that requires resource release - How to use IntelliSense with camel case in IntelliJ IDEA - How to use the TimeUnit class to conveniently use Thread.sleep - How to reduce dependencies by separating packages based on DIP (Dependency Inversion Principle) - How to control the environment using Clock.fixed - Double bracket technique that can be conveniently used when configuring Spring Configuration In fact, the things I learned listed above are additional parts, and while watching the lecture, I kept thinking about 'how to create a structure that is easy to maintain'. These parts were not completely resolved even after watching the lecture, but since it gave me some direction, I will think harder in the future. Thank you. Lastly, I felt that the condition was different for each lecture. Stay healthy. Once again, thank you for helping me become a better developer.

    • tobyilee
      지식공유자

      You've been reading from the first book. I'm glad it was helpful. Thank you for your kind review.

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

₩70

24%

₩121,000

토비님의 다른 강의

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

비슷한 강의

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