강의

멘토링

로드맵

BEST
Programming

/

Back-end

Toby's Spring 6 - Understanding and Principles

By looking at the process of creating the Spring Framework, we will find out the principles that will help you understand and use Spring well. Through this, we will also look at how the code of the application written by the developer should be created.

(5.0) 191 reviews

2,846 learners

  • tobyilee
토비의스프링
스프링_원리
저자 직강
Java
Spring

Reviews from Early Learners

What you will learn!

  • Core principles of Spring technology

  • Object-oriented design principles and design patterns

  • How to verify code using tests

  • Continuous improvement of code through refactoring

  • Dependency injection, templates, exceptions, service abstraction

The Spring Guru is back!
Toby's Spring 6 Returns After 14 Years

<Toby's Spring 3>, which was published a long time ago and was loved by many developers, is back after 14 years!

This course captures the core content covered in Toby's Spring 3.1, reorganized for Spring 6 and the latest Java versions . Focusing on example code that showcases popular approaches and techniques, you'll gain an in-depth understanding of the latest Spring Framework.


Are you having these concerns? 🤔

Since Spring provides such a vast range of technologies, it takes a lot of time to find the functions you need and learn how to use them .

While it's great that Spring offers a variety of options as a flexible framework, it can be a burden to consider many factors to find the optimal solution .

I want to easily verify that Spring Framework functions are working properly, and develop the ability to respond to unexpected problems more quickly and accurately .


Not how to use it
Why you should learn how it works

Spring is a flexible and highly extensible framework . Depending on the characteristics of the application being developed, it's important to select the necessary technologies and Spring features. Sometimes, you may need to extend Spring's functionality to suit your application. While Spring Boot can help you get started easily, understanding the fundamental operating principles and development principles of Spring's technologies is crucial for effective use.

More importantly, Spring began as a book that outlined best practices and flexible development principles for Java enterprise and server development. In other words, Spring is a framework developed from the ground up with object-oriented design principles, patterns, and best practices in mind . Therefore, applying Spring's fundamental principles to application code that uses Spring is a natural approach, and this is precisely why learning Spring's fundamentals is crucial .

To become a good Spring developer
Develop the power of thought

The lecture is structured to help you understand the principles of Spring while going through the process of creating good code through refactoring .

Although this is a simple example, pay attention to the changes in the code covered in the lecture. You can see what questions are being asked about the current code, what issues are being raised, and what attempts are being made. You can also examine the effects of the refactored code and how Spring itself implemented it.

Furthermore, I believe that the Spring principles and patterns you learn through the process of refining and improving your own code will resonate deeply with you. I hope this lecture will provide insight into what Spring developers require and what kind of code they expect .

What you'll learn 📚

This course will explain key principles that will help you learn and understand Spring's vast technology more effectively, and how to apply those same principles within the applications you develop.


Objects and Dependencies

Spring is a framework that helps you create code that achieves its effects by faithfully applying object-oriented design and implementation, development principles, and design patterns using Java.

We will examine the core of dependency injection and the operating principles of the Spring container that supports it through the process of writing object-oriented code.

We'll explore the most basic and important features Spring provides and how to write application code to take advantage of them by improving sample code.


test

If you're not going to write tests, why use Spring? While Spring offers many features and benefits, its greatest benefits are its ability to easily and conveniently write tests for your code and its ability to easily configure tests for difficult-to-test targets.

We'll explore different approaches to writing tests for your application code, including testing code that uses APIs and testing time-sensitive tasks that are difficult to control.

We also cover useful learning tests as you learn the skills.


Template

The flexibility of object dependencies can also be experienced by leveraging the various templates provided by Spring. By leveraging design patterns and the Spring container together, we'll create highly reusable and scalable templates and callbacks, and we'll also examine templates applied to Spring.

You will learn how to simplify complex and repetitive code with fixed workflows using templates.


exception

We'll first explain the types of exception handling code, its challenges, and the basic principles to follow. We'll explore Spring's exception handling approach, using examples of code that utilizes database data access features. We'll then create JPA code and examine how Spring's DataAccessException works.

Create a systematic exception structure and describe appropriate exception handling methods.


Service abstraction

Let's first look at the types and features of the service.

Let's look at Spring's service abstraction, which allows application service code to be independent of specific technologies when using infrastructure services that provide technology, through an example of a transaction.

It also describes an effective way to use proxies to separate technical code that appears alongside business logic, while abstracting code that is not tied to a specific technology.


How to learn Spring

To understand the fundamental principles of Spring and apply them, you need to learn various ways to structure applications with the Spring Framework and be able to effectively utilize libraries provided by Spring.

Describes the basic strategy for learning Spring technologies and the types of technologies you should learn.


Pre-course notes

Practice environment

  • Operating System and Version (OS) : You will need a desktop operating system that supports Java technology, such as Windows, Mac, or Linux.

  • Tools to use: You will need to install JDK 17 or JDK 21 and an IDE, which is a development environment that allows you to develop and run Java projects.

    • The course uses IntelliJ IDEA Ultimate version.

    • You can use IntelliJ IDEA Ultimate or Community edition for the example exercises.

    • You can use any Java IDE such as Eclipse or STS, but we strongly recommend using IntelliJ IDEA.

Learning materials

  • You can access example code on GitHub. Each lesson step is committed, so you can check out and explore any section you want.

  • You can download the 230-page slides used in the lecture as a PDF file.

  • We provide lecture notes in PDF format, containing reference material for each class. We plan to continuously update these lecture notes based on student questions and other feedback.

Player knowledge and precautions

  • You need sufficient knowledge of the Java language to understand code written in it. At the very least, familiarity with Java 5 annotations, anonymous classes, and Java 8 lambda expressions is essential. Additional syntax and Java class library usage in later Java versions will be briefly explained in the lecture. It would be helpful to familiarize yourself with syntax added in Java 17 or 21 .

  • If you're curious about the overall flow, you can watch the entire video without following the examples. Afterward, I recommend going back and following the examples step by step, improving or applying the code yourself.


  • If there are any parts that require further explanation, we plan to add related videos.

Expected Questions Q&A

Q. I have Toby's Spring 3 or 3.1 book. Should I read the book first and then watch the lectures? Or is it better to study in reverse? If I watch the lectures, do I have to skip the book?

If you haven't purchased or studied the book yet, I recommend watching the lectures first. The example code is written using methods and techniques commonly used today, making it easier to understand than books published long ago (2010-2021). Furthermore, the lectures focus on providing concise, essential information, so watching them first is highly recommended.

After thoroughly studying the lecture material, it's a good idea to look at Toby's Spring book. It contains much more detailed information and explanations. Even if you don't read Volume 2, which includes detailed technical explanations, Volume 1 still provides many helpful sections for rereading while remembering the lecture material. However, if you have other things to learn, you don't necessarily need to read the book. Still, it's worth purchasing it for reference. 😄

Introduction of knowledge sharers

History

  • After working in Korea and the US, I am currently working as a consultant and developer in Australia.

  • I have 31 years of experience in practical development and 21 years of experience in Spring Framework development.

  • We have developed various systems and services in the manufacturing, logistics, finance, mobile communications, commerce, education, and service domains.

  • Author of Toby's Spring 3.0 and 3.1 books.

  • I founded the Korean Spring User Group (KSUG) and have been active in the developer community for a long time.


Recommended for
these people

Who is this course right for?

  • For those who want to better understand and utilize Spring

  • People who are using Spring in practice

  • Anyone who wants to learn flexible and scalable development methods

Need to know before starting?

  • Java language

  • Understanding Web API and DB Programming

Hello
This is

14,326

Learners

841

Reviews

394

Answers

5.0

Rating

8

Courses

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

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

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

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

 

 

Curriculum

All

58 lectures ∙ (12hr 27min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

191 reviews

5.0

191 reviews

  • Sang Do Park님의 프로필 이미지
    Sang Do Park

    Reviews 17

    Average Rating 4.8

    5

    100% enrolled

    담백하다. 강의 시간을 늘리려는 수식어구와 빈말로 가득한 온라인강의용 말투가 일절 없다. 몇 번의 리허설을 통해 압축하고 채우고 정리한 담백하고 진하다. 빠르게 보기 위해 점프하며 넘어가는 다른 강의와는 농도에서 확연히 차이난다. 아마 대부분 수강생이 강의를 보다 보면 강의 흐름에 빈 틈이 없다는 것을 가장 크게 느껴질 것으로 생각된다. 끝까지 스프링 설명이 시작되지 않았다. 그런데 다 듣고 나니 개발생태계의 초식을 통해 스프링이 어떻게 돌아가는지 핵심을 알게 되었다. 대상자는 입문부터 중급이상 모두 포함이다. 초급이라며 !! 의 아우성과 이런 내용까지?? 라는 감탄이 섞여 있다. 아주 간단한 예제로부터 시작하여, 클래스와 객체를 설명하고, 관계를 통해 더 편하고 세련된 방법을 찾아가는 여정을 그대로 보여준다. 어느 순간 변화에 대응하기 위해 시작된 고민이 디자인 패턴에 이르게 된다. 디자인 패턴 책을 펴놓고 많은 패턴들을 눈 앞에 두고 암기식으로 배우던 지난 시간에 눈물이 난다. 오히려 변화에 어떤 패턴을 써야 하는지를 고민하게 될 수 있게 된다. 그렇게 디자인 패턴의 입구에 도착할 즈음.. 스프링은 DI 를 쉽게 지원하는 프레임워크라는 말을 증명하듯 의존성 역전 원칙에 대해 정리한다. 마치 ... 학생들이 크카나마알아페니... (K Ca Na Mg Al Zn Fe Ni Sn Pb H Cu Hg Ag Pt Au)를 외우거나, 태정태세문단세예성연중인명선광인효현숙경영정순헌철고순은 (조선왕 시호) 를 외우듯이, 개발 책을 두고 SOLID 를 외우고는 한다. 마찬가지로 시험을 위해 외우듯 하다보니 이해 못한 내용을 직접 필요한 기능을 만들어내는 코드 변화 과정으로 설명하는데 이해하지 못할 이유가 없었다. 감탄사 크게 한 번 하고 가자. 개발자라면 본인의 코드를 빠르게 그리고 신뢰성을 높이기 위해 테스트를 진행해야 하는데, 테스트가 필요한 이유와 방법을 2시간에 걸쳐 보여주는데, TDD 라는 타이틀을 걸고 메뉴얼에나 있을 법한 내용으로 침소붕대하는 강의들을 보며 질려 있을 시기에, 본 강의에서는 딱 필요한만큼 보여 준다. 테스트 코드의 의미가 어떻고 어떤 것이 진정한 테스트 코드라는 식의 구구절절보다 테스트는 어떻게 실행하고 어떻게 무엇을 검증해야 하는가가 더 중요하다는 선에서 테스트 부분을 마무리한다. 코드의 재사용 필요성은 누차 이야기해도 과함이 없지만, 어떤 코드를 재사용해야 하는지 그리고 변화가 필요한 부분은 어떻게 구분하는지를 보여주고, 이를 템플릿으로 만들어내는 과정을 보여 준다. 이때 자연스럽게 콜백이라는 개념을 눈으로 확인 할 수 있고, 이 모든 과정이 스프링에서 어떻게 완성되어 있는지를 보여준다. 초보자를 위한 강의가 아닌데, 예외를 설명한다고 싶어 궁금했는데, 당부에 당부까지 얹어 예외 처리에 대한 유의사항을 설명하면서 마지막에 추상화에 대한 개념과 실체, 그리고 스프링에서 다양한 추상화된 기능들을 보여 준다. 그리고 그것들이 사실 이렇게 지금까지 배운 개념들을 망라한 기술들의 총 합이라는 마무리를 한다. 초식을 통해 접근하며, 기능이 추가 되더라도 결국 객체와 관계, 패턴과 템플릿, 그리고 테스트를 기반으로 한 신뢰성 확보와 추상화를 통한 종속성 탈피까지.. 개발자가 알아야 될 거의 모든 것을 스프링강의 타이틀 안에 넣어버리겠다는 의지가 보이는 강의였다. 이건 도시락 싸들고 다니며 추천하고 소중한 이에게 선물해야 하는 명강의다. 인프런 일 좀 하자 ~~ 상대방 인프런 계정 이메일 주소를 알면 선물을 할 수 있는 기능이 있어야 된다 !!!! 고 비용을 내고 소수만 듣는 강의를 거부하고 인프런에서 모든 개발자를 위해 2년 넘는 시간동안 무림 비법서를 만들어 내신 토비님께 감사를 드리며 후기를 마치니 .. .여러분 !! 여기에요 달려요 !!! # 1등할 수 있었는데... 100% 수강 안하고 수강평 남긴 사람들 다 반칙 .. 나빠 !! # 도메인 부분 강의 클립 하나만 봐도 이 강의 전체 비용을 커버할만큼 완벽한 빌드업이 뒷받침된다. 다른 강의 클립은 둘째치고 안 보면 후회한다. 화룡점정

    • 토비
      Instructor

      첫 100% 수강후 작성 글이라서 감동입니다. 좋게 평가해주셔서 감사합니다. 그런데 수강평은 뭔가 남기고 싶을 때 자유롭게 작성하시면 됩니다. :) 인프런에 강의 선물하기 기능은 저도 있으면 좋겠다고 생각했는데 없다니 아쉽네요!!

    • 안녕하세요. 인프런 입니다! 좋은 강의를 주변에 공유하고 싶으셨다면, 이제 인프런 강의 선물하기 기능으로 직접 선물하실 수 있어요! 수강평에서 느껴지는 따뜻한 마음이 지인,동료 주변인의 성장으로 이어지길 바랄게요 🎁 강의 선물하기 공지사항 > https://www.inflearn.com/notices/1649873 감사합니다.

  • 최재형님의 프로필 이미지
    최재형

    Reviews 2

    Average Rating 5.0

    5

    59% enrolled

    선발대입니다. 저는 토비의 스프링 책을 회사와 집에 각각 비치하고 있습니다. 책이 나온 지 벌써 14년이 되었지만, 여전히 스프링의 동작 원리와 스프링이 제공하는 추상화를 이해하는 데 큰 도움이 됩니다. 강의 출시하자마자 보기 시작했는데 홀린 듯 다음 강의 보기를 누르다보니 자야 할 시간이 됐습니다. 예제 코드를 통해 기능 요구사항을 만족하는 상황에서 문제점을 제시하고, 디자인 패턴과 설계 원칙 들을 적용해 나가면서 변경 가능한 코드로 탈바꿈하는 과정이 있는데요. 쉽게 이해할 수 있고 몰입감 있게 수강했습니다. 중간중간 던져 주시는 키워드들을 그냥 넘기지 않고 찾아보는 것을 추천드립니다. 스프링이 20년 넘게 발전해왔지만, 그 기반 기술은 여전히 견고하다는 점에서 객체지향 설계의 대단함을 느낍니다. 책에서도, 이번 강의에서도 토비님은 물고기를 잡는 법을 알려주시는 것 같습니다. 토비님 사랑합니다.

    • 토비
      Instructor

      스프링이 바뀌지 않고 견고하게 지키고 있는 그 기반 구조와 거기에 반영된 원칙들이 시간이 꽤 오래 흘러도 변함없이 유지되고 있다는 게 저에게도 큰 감동입니다. 첫 번째 수강평 감사합니다.

    • Zin
      Instructor

      선발대 현황이 어떻게 되나요 ㅎㅎ 수강 완료 후의 후기도 궁금하네요!

    • 아! 수강평 작성 후 바로 완강 했었는데 완료 후기도 남겨봅니다. 수강 내내 많은 준비를 하셔서 매끄러운 강의를 만드셨다고 느꼈습니다. 억지스러운 문제가 아닌 문제를 제시하시고 차곡차곡 바텀 업되어 해결해나가는 과정에서 어떻게 풀어내실까? 이렇게 하지 않으실까? 이런 생각을 하면서 토비님의 생각과 제가 풀고자하는 방향이 겹치는지(?) 확인하는 재미가 있었습니다. 평소 제가 모르는 코드, 혹은 설계가 선망의 대상이 되는 부분을 경계해야된다고 생각하곤 하는데요. 토비님의 지식 전수에 힘 입어 정보의 바다에서 변별력 있게 받아 드릴 수 있는 근거들이 쌓이고 있는 것 같습니다. 재밌고 유익하게 봤습니다. 감사합니다. 사랑합니다. P.S 이번 인프콘 때 봽고 싶었는데 ㅜㅜ 인프콘 떨어졌습니다 천추의 한 입니다.

  • Hyunwoo Kim님의 프로필 이미지
    Hyunwoo Kim

    Reviews 4

    Average Rating 5.0

    5

    31% enrolled

    일단 동영상 강의가 ADHD를 가진 제가 하루 만에 30%를 볼 정도로 흡입력이 있었습니다. SOLID 원칙과 객체 지향 등 주니어 개발자에게 다소 추상적으로 다가오는 개념들도 알기 쉽게 풀어주시고 예제와 함께 설명해주셔서 어미새가 연상되었습니다. 이번 강의에서 확실히 알고 계신 마에스트로분들은 오히려 문장이 간결하고 담백하다는 점을 느꼈습니다. 마치 잘 차려진 한정식을 먹는 기분이 들었습니다. 오브젝트의 조영호님의 오프라인 강의를 들을 때도 느낀 감동인데, 토비님의 강의도 대본을 준비하신 것 같다는 착각이 들 정도로 흐름이 자연스럽고 논리력을 가진 문장들이 편안했습니다. 물론 개발 공부에 왕도는 없다고 생각합니다. 그렇지만 이 정도의 나침반과 함께라면 길을 잃지 않을 것 같네요. 또한, 복잡한 개념들을 쉽게 설명해주는 방식이 공부에 큰 도움이 되었습니다. 이 강의를 통해 어려운 개념들도 자신감을 가지고 접근할 수 있게 되었습니다. 그리고 여담으로 책으로만 접해서 예상치 못한 부분인데, 토비님의 음성이 집중력을 높이고 몰입하게 하는 힘이 있었습니다. 차분하면서도 힘 있는 목소리가 아주 좋았습니다.

    • 토비
      Instructor

      어떤 점이 좋으셨는지 궁금하네요. 좋게 평가해주셔서 감사합니다. 스프링을 잘 활용하는 멋진 개발자로 일하시는 모습을 기대합니다.

    • 토비
      Instructor

      자세한 수강평도 적어주셔서 감사합니다.

  • 오늘도 열심히님의 프로필 이미지
    오늘도 열심히

    Reviews 1

    Average Rating 5.0

    5

    34% enrolled

    아직 전체 다 듣지는 못하였으나, 지금까지 들은것만으로도 수능1타 강사보다 더욱 설명을 잘한다는 생각을 가지게되어 다급하게 먼저 수강평을 남깁니다. 항상 "스프링"을 공부할때 따라다녔던 글로만 설명되던 것들을 정확하게 누가 들어도 알기쉽게 풀어서 동작하는 원리를 이해시켜주는 것이 제 생각에는 스프링이 수능종목 이였다고 한다면 일타강사 하고 계셨을 것 같습니다. 그정도로 정확하게 제머리에 DI(이해하려 하지않아도 이해가 주입됨) 를 해주시는 것 같습니다. 이 강의를 보고나서 스프링 3.1 도 정독해보려고 합니다. 글로 되어있는 딱딱한게 싫어서 미루고만 있었으나, 이번 기회에 제대로된 공부를 해보고 싶다는 생각이 드네요 ㅎㅎ 항상 감사하게 생각하고있습니다. 수강평을 수정할 수 있다고 한다면, 다 읽고 후기 추가하도록 하겠습니다. 아무쪼록 건강하셔서 좋은강의 더 만들어주셨으면 좋겠습니다.

    • 토비
      Instructor

      이해가 잘 된다고 해주시니 감사하네요. 남은 내용도 유익했으면 좋겠습니다. 책은 양은 많지만 최대한 친절하게 풀어서 설명하려고 노력했습니다. 제한된 시간의 강의로 만드느라 더 설명하고 싶어도 못했던 내용들이 있는데 책에는 좀 더 많은 설명을 담으려고 했으니 여유가 있으시면 1권 정도는 보시는 걸 추천드립니다.

    • 100% 수강 후기 강의 진행도 100% 채우고 나서도 역시 듣길 잘했다 라는 생각을 꾸준하게 하면서 강의를 들었던 것 같습니다. 강의를 들으면서 느끼는게 밥을 먹는걸로 비교한다면 요리를 다차려주고 먹어 라고해서 먹기만 하는게 아닌 재료는 이런게 필요하고 어떻게 조리해야하고 그것을 통해서 이렇게 조합해서 먹으면 맛있는 요리를 만들 수 있을 거야 라고 하는 느낌을 많이 받은 것 같습니다. 개발관련해서 처음 시작을 잘못하여 레거시 프로젝트에 유지보수만 하다가 인프런이라는 곳에서 강의를 통해 토비님도 알게 되고 스프링에 대해서 한걸음 더 다가갈 수 있었던 것 같으며 인터넷에 떠도는 글로만 보아서는 이렇게 이해할 수 없을만큼 확실하게 이해시켜주는점에 다시한번 감사 드립니다. 다른 강의도 많이 만들어주셨으면 좋겠습니다. 책 1권을 다 읽고나서 스프링 레퍼런스도 한번 읽어보고나서 다시 강의 복습겸 들어보려고해요. 만약 그때가 된다면 다시한번 답글로 저의 느낀점을 남겨보도록 노력하겠습니다. 추가로 인프콘에 당첨되서 이번에 직접 뵐수 있으면 정말 좋을것 같습니다. !! 좋은강의 감사합니다.

  • 고대준님의 프로필 이미지
    고대준

    Reviews 58

    Average Rating 4.9

    5

    100% enrolled

    보다 나은 개발자가 될 수 있게 도와주셔서 감사합니다. '토비의 스프링 3.0' 양장본을 여전히 읽고 있습니다. 처음 읽었을 때는 1장부터 8장까지의 내용을 넘기고 실무적인 부분만 보았던 것 같습니다. 하지만 시간이 지나면서 오히려 앞부분인 1장부터 8장까지를 다시 보게 되었습니다. 강좌는 이 앞부분의 내용을 중심으로, 스프링 구현의 어려운 부분을 최대한 배제하고 원리를 설명하는 방식으로 진행되었습니다. 토비님의 특유의 원리를 깨우치기 위한 빌드업 방식의 설명도 여전히 유효했습니다. 책을 통해서는 느끼지 못했던 부분이지만, 강좌를 통해 느낀 점은 다음과 같습니다 - 코드를 변경의 이유와 시기에 따라 분리해야 한다는 점 - 리소스 해제가 필요한 코드를 작성할 때, Open과 동시에 Close 하는 좋은 습관 - IntelliJ IDEA에서 카멜케이스로 인텔리센스를 동작시키는 방법 - Thread.sleep을 편리하게 사용할 수 있는 TimeUnit 클래스 사용법 - DIP(Dependency Inversion Principle)를 기준으로 패키지를 분리하면 의존성을 줄일 수 있다는 점 - Clock.fixed를 사용하여 환경을 조절하는 방법 - Spring Configuration 구성 시 편리하게 사용할 수 있는 더블 브라켓 기법 사실 위에 나열한 배운 점들은 부가적인 부분이고, 강좌를 보면서 제 머릿속에는 계속해서 '어떻게 유지보수가 편한 구조를 만들 것인가'에 대한 고민이었습니다. 이러한 부분들이 강좌를 다 본다고 해서 완전히 해결되지는 않았지만, 일정 부분 방향성을 제시해 주셔서 앞으로 더 열심히 고민해 보겠습니다. 감사합니다. 마지막으로, 강좌마다 컨디션이 다른 것이 느껴졌습니다. 건강하세요. 다시 한번, 보다 나은 개발자가 될 수 있게 도와주셔서 감사합니다.

    • 토비
      Instructor

      첫 책부터 보셨군요. 도움이 되었다니 기쁘네요. 좋은 평가 감사합니다.

$93.50

tobyilee's other courses

Check out other courses by the instructor!

Similar courses

Explore other courses in the same field!