This course will help you understand the operating principles of Spring Boot by creating the core functions of Spring Boot yourself, and learn how to learn and use Spring Boot well through this. You can learn various ways to utilize the Spring Framework used by Spring Boot.
How to understand and leverage the technologies and configurations provided by Spring Boot
Core technologies and usage of Spring Framework
How to create your own Spring Boot module
Creating a framework with my own hands Get the basics of Spring Boot straight! 🌱
Toby's Spring Boot
Spring Boot core features and operating principles
Spring Boot is a tool that helps you develop Spring applications quickly and easily. It allows you to start developing Spring applications very quickly and conveniently, and it handles a lot of the work behind the scenes, almost like magic.
Spring Boot has become the de facto standard for building applications using the Spring Framework. However, without understanding the underlying principles behind its convenience, you'll encounter various limitations and barriers. To grow your application, incorporate more technologies, and adapt to your specific needs, you need to understand how Spring Boot supports Spring development.
Have you ever had these concerns? 🤔
I'm developing an API server or backend service with Spring Boot, but I'm not sure if I understand and use Spring properly .
I'm confused because the system functionality created with Spring Boot has changed after applying a tip I found through the community or search.
I was developing only with the Spring Framework, but then I switched to Spring Boot, and it seems like the Spring utilization methods I knew have become useless .
I don't really understand what the difference is between Spring and Spring Boot, and what Spring Boot is all about .
I want to add a new technology to Spring Boot or change how it is used , but I am not sure how to do it correctly.
I want to create my own technology or feature module that can be applied automatically like Spring Boot.
In this course, you'll learn the core operating principles of Spring Boot, essential for learning and utilizing it effectively. You'll be able to fully understand and utilize Spring Boot through the following three steps.
1) Understand how Spring Boot works
Understanding how Spring Boot works will help you learn and apply new technologies quickly and accurately, as you'll gain a consistent approach across its many technologies. This will eliminate the need to resort to searching for fragmented solutions every time. By mastering the consistent approach and application methods used across various Spring Boot technologies, you'll be able to accurately analyze problems and find solutions.
2) Building Spring Boot with my own hands
The best way to understand how Spring Boot works is to build one yourself. Spring Boot is also an excellent example for learning how to use the Spring Framework. By building one yourself, you can reflect on the origins of Spring Boot, its goals, and how the Spring Framework was developed. By building simple yet essential code yourself, you can gain a wealth of knowledge about Spring and backend Java development. By learning how Spring Boot was built, you can create your own Spring Boot modules or even create convenient tools that apply Spring technology.
3) Understand how Spring Boot leverages the Spring Framework.
Understanding how Spring Boot works will help you understand how it leverages the Spring Framework. You'll also be able to delve deeper into the various features of Spring Boot.
You can directly apply the Spring Framework's usage to application development.
You will be able to handle the Spring Framework well, like Spring Boot.
I can also modularize the code I created in Spring Boot style for convenient reuse.
I recommend this to these people 🙋
Anyone who uses Spring Boot in practice
Those who want to know and utilize Spring and Spring Boot better
For those considering switching from Spring to Spring Boot
Those who want to learn Spring Boot more effectively
Join Spring Guru, Toby! 🤗
If you have basic knowledge of the Java language and experience creating a Hello World-level server with Spring Boot, you can get started.
We'll explain in detail the Java web development technologies that appear at each stage of development, the core principles of the Spring Framework, and how to use Spring technology.
We'll help you analyze Spring Boot's configuration and use it correctly by creating code that embodies the core operating principles of Spring Boot.
You will get to know the Spring Framework better.
What you'll learn 📚
1. Taking a look at Spring Boot
We'll explore the reasons for Spring Boot's creation, its features, and its goals. We'll explain what it means for Spring Boot to be containerless, what it means to be opinionated, and why understanding Spring Boot is crucial. We'll also delve into the potentially confusing concept of containers.
2. Standalone applications
Let's explore how standalone applications, a key feature of Spring Boot, are possible by creating standalone servlet applications and standalone Spring applications. Through this, we'll also learn how Spring web technology is built and how the Spring container is used in the process.
3. Dependency Injection
When talking about Spring, you can't leave out DI. We'll explore the concept of DI, how Spring supports it, and how it applies to testing. We'll use the Spring container to apply DI to our code. We'll also explore decorators and proxy implementations using DI.
4. Auto-configuration-based applications
This course explores the types of Spring configuration metadata and explains how Spring Boot handles them. It explores the auto-configuration introduced by Spring Boot and the user configuration created by developers. This course will help you understand the structure of applications developed with Spring Boot. Through actual development, you'll demonstrate how Spring Boot's auto-configuration leverages various Spring technologies. You'll also learn how to utilize various Spring annotations utilized by Spring Boot.
5. Conditional automatic configuration
We'll explore how Spring Boot leverages Spring's @Conditional conditional bean registration technology for auto-configuration. You'll experience firsthand how application configuration information changes by varying conditions. We'll also explore how directly adding bean configurations to Spring Boot affects auto-configuration.
6. Automatic configuration using external settings
Spring Boot's convenient auto-configuration doesn't limit development in a rigid, one-sided way. We'll explore how to leverage external configuration to easily and flexibly customize the technologies Spring Boot provides through hands-on implementation. We'll also explore Spring's Environment abstraction, property source precedence, and the use of placeholders. We'll also explore how the numerous properties listed in application.properties are linked to auto-configured beans and how they are grouped.
7. Spring JDBC Auto-Configuration Development
You'll design and implement autoconfiguration for Spring JDBC technology yourself. This will teach you strategies for understanding the structure of autoconfiguration applied in Spring Boot. You'll learn how to design with multiple options, similar to Spring Boot, and experience how autoconfiguration applies appropriate features based on conditions, all while creating actual code.
8. A Closer Look at Spring Boot
You'll see that even if you convert the Spring Boot-like code you've been developing directly to Spring Boot, your application code will still behave the same. Now, you'll have a clearer picture of what's happening underneath the surface when developing with Spring Boot. You'll learn how to analyze Spring Boot's extensive auto-configuration without getting overwhelmed. You'll also analyze the auto-configuration code found in Spring Boot Core, Spring Web, and JDBC.
Things to note before taking the course 📢
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 11 version 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 the free IntelliJ IDEA Community version or STS (SpringSource Tool Suite).
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 130-page slides used in the lecture as a PDF file.
Lecture notes, including brief explanations of the content covered in each class and reference materials, are provided in PDF format for each section. These notes may be continuously updated.
Player Knowledge and Precautions
You need sufficient knowledge of the Java language to understand code written in it. Familiarize yourself with Java 5 annotations, anonymous classes, and Java 8 lambda expressions and streams .
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 adapting the code yourself.
We will update the video with information on how to upgrade the example to Spring Boot 3.0.
If there is any part that needs further explanation, related videos will also be added.
Expected Questions Q&A 💬
Q. Why do I need to understand how Spring Boot works?
You don't need to understand the workings of every technology you use, but understanding how Spring Boot works will help you use it more effectively. Spring Boot handles many tasks automatically and behind the scenes, so understanding this will allow you to leverage its features without missing anything. You can also extend it to perform the tasks your application requires. Learning how to utilize the Spring Framework embedded in Spring Boot will also help you develop Spring-based applications.
Q. I don't know much about the Spring Framework. Can I still take the course?
This course introduces the Spring Framework technology used by Spring Boot and also explains core Spring concepts. It covers the Spring container's operation, dependency injection, and applicable design patterns. Of course, after completing this course, it's recommended to delve deeper into the Spring Framework's technology and operating principles if you're interested.
Q. The course uses Spring Boot 2.7. Will it be helpful when using the recently released 3.0?
All examples presented in this lecture will work with Spring Boot 3.0, with only minor changes to the library version and some package names. The lecture also covers how to migrate examples to Spring Boot 3.0.
Introducing the Knowledge Sharer ✒️
History
I have 30 years of experience in practical development and 20 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 Spring Boot and use it freely
If you are using Spring Boot but feel like you don't know much about Spring,
Anyone who wants to learn Spring Boot effectively
Anyone who wants to create and use their own Spring Boot module
Need to know before starting?
Java language (Java 8+)
Hello This is
13,561
Learners
736
Reviews
341
Answers
5.0
Rating
7
Courses
호주에 살고 있는 소프트웨어 개발자입니다. 30년간 다양한 분야의 시스템과 서비스를 개발해본 경험이 있습니다.
스프링 프레임워크와 관련 기술을 좋아하고 JVM 기반 언어를 주로 사용합니다.
한국스프링사용자모임(KSUG)을 설립하고 활동했고, 토비의 스프링이라는 책을 쓰기도 했습니다.
안녕하세요. 저는 만 7년 이상 스프링 실무경력을 가지고 있는 개발자입니다.
강의 수강 후 느낀 결론부터 이야기하면, 토비의 스프링 책과 마찬가지로 많은 개발자가 이 강의를 보셨으면 하는 바람입니다.
스프링을 공부하면서 토비의 스프링을 접하게 되었고 자연스레 토비님도 알게 되었습니다. 토비의 스프링 책을 읽으려고 하면 주변 개발자들은 "토비의 스프링은 나중에 경력이 생기면 읽어라" 라는 이야기를 했습니다. 당연히 주변 선임 개발자들이 그렇게 이야기하는 이유가 있을 거로 생각했고 결국 토비님의 책을 늦게 읽었습니다. 어느 책에서든 설명하는 기술적인 내용뿐 아니라, 개발하며 개발자가 문제를 직면했을 때 해결해 나가는 인사이트를 받았고, 책을 다 완독하고 나서 '내가 조금 더 일찍 책을 읽었으면 더 좋은 개발자로 성장할 수 있지 않았을까?'라는 아쉬움이 남았습니다.
토비의 스프링 부트도 책과 마찬가지로 기술적인 부분도 다루지만, 웹의 기본 원리도 강의에 포함되면서 초보자들의 진입장벽을 낮췄고, 정말 강의 구성을 섬세하게 하셨다는 생각이 들었습니다. 문제를 제시하고, 그 문제를 해결하고 리팩터링 하면서 테스트 코드를 통해 문제가 없는 것을 확인해주는 과정이 너무 인상 깊었고, 강의 중에 궁금한 점이 생길때 즈음 CCTV로 저를 보고있으신가..? 싶을 정도로 딱 그 궁금한 점을 풀어주시는 부분, 나만의 스프링 부트를 만들어 나가면서 조금씩 '나만의'를 제거하며 스프링 부트로 변환해 가는 과정이 신기했습니다. "나만의"가 사라지면 사라질 수록 스프링 부트는 내 것이 되는 게 아닌가 싶었습니다.
마지막으로 개발하면서 문제를 직면했을 때 동작을 확인하기 위해 Bean들간의 의존성이 어떻게 엮여있는지 파악 후 로직 확인을 하며 약간의 딥다이브를 하게 됩니다. 이때 의존성을 알기 위해서 Break-Point를 걸어서 확인하는데, 그 방법이 아니라 어떤 Bean이 올라왔는지 확인할 수 있도록 알려주셔서 다른 개발자들 또한 딥다이브를 쉽게 할 수 있는 방법을 알려주신 것 같습니다.
토비의 스프링을 읽고 나서 다음 책은 언제 나올지 항상 궁금했었는데, 강의를 통해 토비님을 뵙게 되어서 너무 좋았습니다! 좋은 목소리와 목소리 톤 그리고 쉽게 흡수될 수 있도록 하는 섬세한 설명이 정말 최고였습니다.
주변 초보 개발자분들께도 강의를 추천하며 다음 강의도 정말 기대하겠습니다!
감사합니다 :D
스프링을 스프링 부트로 처음 접한 현직자입니다. 스프링 부트를 도구로서 사용하는 데는 문제가 없었습니다. 하지만 항상 스프링 부트가 왜 나왔는지, 어떻게 발전되어왔는지에 대한 가려움이 있었죠. 이 강의는 그 간지러운 부분들을 아주 속속들이 긁어주는 명강의입니다.
가려운 부분을 정말 쉽게 긁어주신 토비님 정말 감사합니다. 👍
(MyXXX 어노테이션들이 스프링 부트의 어노테이션들로 변경되는 부분은 정말 소름이 돋았습니다. 🥶)
스프링 부트에서 마법처럼 편하게 해주는 것들이 실제로 어떻게 되는것인지에 대해서 직접 만들어가면서 이해할수있는 좋은 시간이었고, 그 과정에 진행하는 학습테스트가 너무 좋았던거같습니다.
개인적으로는 전체적으로 스프링 부트 핵심 원리와 개념을 익히는 것도 좋았지만,
1. 간단히 해결할 수 있는 방법으로 만들고는 조금 더 나은 방식으로 리팩터링
2. 리팩터링 하고는 테스트를 통해 이전과 이후가 같은 결과를 보이는가 확인
3. 처음에는 직접 실행시켜가며 결과 확인 했지만, 복잡해지고 반복됨에 따라 자동화된 테스트로 변경
이런 진행방식이 더 흥미로웠고, 많이 배웠습니다.
다음 강의도 기다리고있겠습니다! :)