Core design patterns, thread locality, Spring AOP Understanding Spring's Three Core Advanced Concepts
📢 Please check before taking the class!
This lecture is the eighth in the "Complete Java Spring Mastery" series. First, check out the Spring Mastery Roadmap from Younghan Kim, the youngest technical director at Woowa Brothers. (Go to)
Concepts, operating principles, practical examples, and precautions
Kim Young-han's Advanced Spring Core Principles Core design patterns, thread locality, Spring AOP
The most commonly used technique in practice Spring Framework
To become a skilled developer, you need to have a deep understanding of the tools you frequently use in your work. Spring is the most widely used backend technology in practice. Therefore, it is important for backend developers to have a deep understanding of Spring.
Spring Core Principles From basic to advanced
We previously learned the basics of Spring and object-oriented development in Spring Core Principles - Fundamentals . To deeply understand Spring and become a competent developer in the field, you need to understand three key advanced concepts, building on what you learned in the basics. In this "Spring Core Principles - Advanced" chapter, you'll learn these advanced concepts.
1. Spring Core Design Patterns 2. Thread locals to handle concurrency issues 3. Spring AOP
Spring Core Principles Advanced
1. Spring Core Design Patterns
Spring's internal technologies are built around several core design patterns. Therefore, to gain a deeper understanding of Spring, you must first understand the core design patterns it frequently employs.
Key design patterns taught in lectures
Template Method Pattern
Strategy Patterns
Template callback pattern
Proxy pattern
Decorator pattern
In this lecture, we'll explain these design patterns in a very easy-to-understand way, creating example code one by one. We'll also learn how to apply the design patterns we've learned to your own applications.
2. Thread local
Spring is primarily used for web application development. Web applications use multithreading to handle multiple requests simultaneously. Therefore, concurrency issues can arise due to competing threads.
Concurrency issues and thread locals covered in the lecture
web application
multithreading
concurrency issues
In this lecture, you will learn about concurrency issues that arise when using Spring, and also learn about the concept of thread locals, which can conveniently solve concurrency issues. Thread locals are an essential concept to understand how Spring works well in a multithreaded environment without concurrency issues.
3. Spring AOP
Spring AOP is a technology so widely used in practice that it feels almost magical. While many developers use Spring AOP, few truly understand how it works.
Beyond simply knowing and using Spring AOP's features, you need to deeply understand the operating principles of Spring AOP to be able to fundamentally resolve problems when they occur.
Spring AOP content delivered in lecture
Concepts and Terminology
Proxy - JDK dynamic proxy, CGLIB
How it works
Practical examples
Practical Precautions
In this lecture, we will go beyond a simple summary of Spring AOP's functions and cover everything about Spring AOP, from its operating principles to practical examples and precautions that frequently arise in practice.
etc
Additionally, we will provide you with advanced techniques for developing Spring containers, such as bean postprocessors, and various practical tips for developing Spring applications.
Extension Points in Spring Containers - Bean Postprocessors
Various practical tips for developing Spring applications
This lecture Before you start
As this is an advanced course, the topics covered in this course are not easy. However, if you want to become a skilled backend developer, this is something you must study at least once . If you follow this course through to the end without giving up, you will experience a tremendous increase in your skills as a developer and be able to use Spring with more confidence than anyone else. As this is a difficult subject, I've thoroughly prepared this lecture. I'll help you master it and make it your own.
This lecture I recommend this to these people
Spring deeper I want to know…
Advanced concepts of Spring Improve your skills by learning Those who want to grow more
Spring AOP I do use it though…
How Spring AOP works The principle is accurate Anyone who wants to understand
Spring to Code I want to understand…
Through design patterns Spring's internal technology Anyone who wants to understand
Web App with Spring I'm thinking of making it...
Through thread locals Spring concurrency issues Anyone who wants to understand
To be continued in the future Spring Complete Conquest Series
We're preparing a series designed to help you master Spring completely. We'll focus on core Spring features used in real-world applications, boldly omitting obsolete or outdated features, and provide practical know-how.
Lần này thực sự rất dài. Tôi rất vui vì cuối cùng tôi cũng có thể hiểu được AOP, một trong ba công nghệ chính của Spring. Đối với tôi, nó giống như một công nghệ không thể tiếp cận được (?), giống như con trỏ trong ngôn ngữ C.
Tôi thực sự thích lời giải thích từng bước lần này. Tôi nghĩ có lẽ không có bài giảng hay cuốn sách nào dạy AOP dễ dàng như vậy. Nếu bạn muốn tìm hiểu thêm về mùa xuân, bạn phải kiểm tra nó.
Và để cảm ơn Younghan, tôi muốn viết về thử thách dành cho nhà phát triển mùa xuân của mình.
================
Việc thử một điều gì đó mới mẻ lúc đầu sẽ tốn rất nhiều năng lượng.
...(từ đồng nghĩa)...
Trước hết, việc tạo thói quen học tập thực sự quan trọng. Và khi nghiên cứu phát triển, bạn đặc biệt cần phải chạy và viết mã mọi thứ. Chỉ đọc sách và nghe giảng sẽ không bao giờ là của bạn.
Chúng tôi khuyên bạn nên học liên tục trong 3-4 giờ vào các ngày trong tuần và 8 giờ vào cuối tuần.
================
Tháng 10 năm 2020. Làm lập trình viên Python cho đến nay, tôi thừa nhận rằng sự nghiệp của mình đã đến giới hạn và muốn chuyển hướng sang làm backend Spring nên đã gửi email đến Younghan để xin lời khuyên. Lúc đó tôi đã nhận được phản hồi trên từ Younghan. Đó là một cú sốc và tôi cảm thấy mình cần rất nhiều quyết tâm.
Với kinh nghiệm nhiều năm của mình, tôi đã đạt trình độ cao cấp và chỉ có kiến thức mơ hồ về Java nên thử thách không hề dễ dàng. Tôi liên tục thất bại trong cuộc phỏng vấn. Tôi nhớ rằng khi tôi trượt cuộc phỏng vấn với Woowa Brothers vào đầu năm ngoái, tôi đã học không tốt trong gần một tháng rưỡi.
Như Younghan đã nói, 3-4 giờ thực sự khó khăn, nhưng tôi nghĩ tôi đã cố gắng thực hiện ít nhất một nửa thời gian đó.
Thực ra nội dung bài giảng này không được nhắc đến thường xuyên trong buổi phỏng vấn, nhưng tôi nghĩ điều hữu ích nhất là tôi đã phát triển được góc nhìn sâu sắc hơn về công nghệ back-end nhờ nội dung bài giảng của Younghan. Và thực tế là chúng ta phải học ở một tiêu chuẩn cao hơn nhiều.
(Tôi nghĩ tôi đã cố gắng biến những gì rút ra từ bài giảng thành của riêng mình.)
Tôi tự hỏi liệu những nỗ lực của tôi có được đền đáp hay không… Tôi đã đến một trong những chiếc thuyền Nekaraku vào cuối tháng 3 năm nay. Tôi vẫn cảm thấy mình chưa đủ giỏi nhưng tôi rất hào hứng và có chút lo lắng vì cơ hội đã được trao sau hơn một năm rưỡi chuẩn bị.
Khi virus Corona kết thúc và tôi đã quen với vị trí mới, tôi sẽ đến và nói lời cảm ơn trực tiếp. Cảm ơn cậu, Younghan.
Pilhwan, tôi chân thành chúc mừng bạn.
Bất cứ ai cũng có thể dễ dàng có được niềm đam mê nhất thời, nhưng tôi không nghĩ việc biến nó thành thói quen, hệ thống hóa và tiếp tục bền vững như Pilhwan là điều không dễ.
Đặc biệt, ngôn ngữ tôi phát triển cho đến nay không phải là Java và tôi có rất nhiều kinh nghiệm nên tôi nghĩ sẽ bất lợi hơn nếu xin được việc ở một công ty tốt so với một nhà phát triển cấp dưới điển hình.
Về mặt đó, tôi có thể thấy Pilhwan đã nỗ lực đến mức nào và tôi nghĩ đó là một thành tích tuyệt vời mà anh ấy đã tự mình đạt được.
Và vì bạn có nhiều kinh nghiệm nên có lẽ bạn đã hỏi rất nhiều câu hỏi về cách sử dụng nó trong thực tế thay vì chỉ những điều cơ bản. Tôi nghĩ bạn đã làm rất tốt khi vượt ra ngoài việc chỉ học nội dung bài giảng để đề cập đến những lĩnh vực này.
Hiện tại, hầu hết các công ty đều thiếu nhà phát triển, vì vậy tôi nghĩ bất kỳ ai cũng có thể xin được việc làm ở một công ty tốt nếu họ học tập và có được những kỹ năng phù hợp, giống như lời khuyên tôi đã dành cho Pilhwan.
Cuối cùng, tôi cũng đã trải qua những ngày khó khăn với việc tìm việc và chuyển việc, và tôi nghĩ bài viết của Pilhwan sẽ giúp ích rất nhiều cho những ai đang chuẩn bị đi làm hoặc chuyển việc. Cảm ơn rất nhiều.
Kiệt tác đào tạo AOP mùa xuân. bài giảng hay nhất
Số sao tối đa tôi có thể cho chỉ là 5.
Tôi chỉ cảm thấy tiếc cho người hướng dẫn.. Cảm ơn bạn rất nhiều vì bài giảng tuyệt vời.
Xin lưu ý thêm, tôi nghĩ bạn sẽ có thể thu được nhiều lợi ích hơn nếu thực hành theo mã của người hướng dẫn và sau đó gỡ lỗi logic triển khai nội bộ của SpringObjenesis, CGLIB và proxy động JDK (ProxyFactory, ObjenesisCglibAopProxy, v.v.) một cách riêng biệt.
Cá nhân tôi đã gỡ lỗi thời điểm khởi tạo với ProxyFactory proxyFactory = ProxyFactory (thành phần không có giao diện); và trải qua Enhancer của CGLIB, trải qua nhiều quy trình khác nhau theo quy tắc, và cuối cùng đã tạo và trả về một đối tượng proxy với kết quả là getProxy(). Tôi đã tận mắt nhìn thấy nó được sử dụng và nếu không xem bài giảng của người hướng dẫn, tôi sẽ không hiểu gì vì tôi không nắm được sơ lược quy trình làm việc. Nó sẽ..
Ngoài ra, lớp AspectJAutoProxyRegistrar liên quan đến EnableAspectJAutoProxy nhập các loại chú thích @Aspect và trong logic tiếp theo, quy trình đăng ký đối tượng proxy dưới dạng đậu mùa xuân thay vì đối tượng thực bằng BeanPostProcessor đã được khám phá riêng biệt, cải thiện đáng kể sự hiểu biết của tôi về Spring AOP. Nó.
Cảm ơn bạn rất nhiều vì đã cho tôi xem bức tranh toàn cảnh đầu tiên để tôi có thể hiểu được hoạt động chi tiết của logic thực tế.
Có vẻ như bài giảng của Younghan không phải là bài giảng về cách mở cửa mà là bài giảng về cách cầm nắm cửa và xoay nó. Cảm ơn bạn đã luôn đưa ra những bài giảng hay ㅠㅠ
Tôi đã suy sụp tinh thần sau khi xem Chương 6 của Toby's Spring và đóng cuốn sách lại một lúc, nhưng bài giảng này sâu sắc đến mức tôi phải mở lại.
Đánh giá khóa học)
Lúc đầu, tôi bị choáng ngợp bởi quy mô của khóa học 125 bài giảng, nhưng sau khi nghe xong, tôi hiểu tại sao quy mô của khóa học lại trở nên lớn như vậy.
Như bạn đã nói ở cuối bài giảng, tôi sẽ làm việc chăm chỉ bằng cách truy cập nhiều mã hơn và xem nhiều tài liệu tham khảo hơn.
Bây giờ tôi phải đi nghiên cứu các mẫu thiết kế khác mà tôi chưa hiểu rõ.
Tôi sẽ đến để nghe tốt hơn trong bài giảng tiếp theo. ^^
Lần đầu tiên kể từ khi trở thành người hỗ trợ, tôi đóng góp một chút cho bài giảng (sách tay) nên là bài giảng nâng cao, ý nghĩa hơn bài giảng trước.
Chúc bạn tiếp tục có những bài giảng hay :)