Các mẫu thiết kế cốt lõi, vị trí luồng, Spring AOP Hiểu về ba khái niệm nâng cao cốt lõi của Spring
📢 Vui lòng kiểm tra trước khi tham gia lớp học!
Bài giảng này là bài thứ tám trong loạt bài "Hoàn thiện Java Spring". Trước tiên, hãy xem qua Lộ trình Thành thạo Spring của Younghan Kim, giám đốc kỹ thuật trẻ nhất tại Woowa Brothers. (Truy cập)
Nguyên tắc cốt lõi của Spring - Cơ bản
Thiết kế hướng đối tượng và Spring
RẮN - SRP, OCP, DIP
Spring Container và Spring Bean
Spring Container - IoC, DI
Tiêm phụ thuộc
Chu kỳ sáng tạo và phạm vi trống
Nguyên tắc cốt lõi của Spring - Bài giảng nâng cao hiện tại
Các mẫu thiết kế Spring Core
Mẫu phương thức mẫu, mẫu chiến lược, mẫu gọi lại mẫu, mẫu proxy, mẫu trang trí
Chủ đề địa phương
Các vấn đề đồng thời, đa luồng, vị trí luồng
AOP mùa xuân
Các khái niệm, nguyên lý hoạt động, ví dụ thực tế và biện pháp phòng ngừa
Nguyên tắc cốt lõi của Spring nâng cao của Kim Young-han Các mẫu thiết kế cốt lõi, vị trí luồng, Spring AOP
Kỹ thuật được sử dụng phổ biến nhất trong thực tế Khung công tác mùa xuân
Để trở thành một nhà phát triển có tay nghề, bạn cần phải hiểu sâu sắc về các công cụ mà bạn thường sử dụng trong công việc. Spring là công nghệ backend được sử dụng rộng rãi nhất trong thực tế. Do đó, điều quan trọng là các nhà phát triển backend phải có hiểu biết sâu sắc về Spring.
Nguyên tắc cốt lõi của Spring Từ cơ bản đến nâng cao
Trước đây chúng ta đã học những kiến thức cơ bản về Spring và phát triển hướng đối tượng trong Spring Core Principles - Fundamentals . Để hiểu sâu sắc về Spring và trở thành một lập trình viên thành thạo trong lĩnh vực này, bạn cần nắm vững ba khái niệm nâng cao chính, dựa trên những kiến thức cơ bản đã học. Trong chương "Nguyên lý Cốt lõi của Spring - Nâng cao" này, bạn sẽ tìm hiểu những khái niệm nâng cao này.
1. Các mẫu thiết kế cốt lõi của Spring 2. Luồng cục bộ để xử lý các vấn đề đồng thời 3. AOP mùa xuân
Nguyên tắc cốt lõi của Spring Trình độ cao
1. Các mẫu thiết kế cốt lõi của Spring
Các công nghệ nội bộ của Spring được xây dựng dựa trên một số mẫu thiết kế cốt lõi. Do đó, để hiểu sâu hơn về Spring, trước tiên bạn phải hiểu các mẫu thiết kế cốt lõi mà nó thường sử dụng.
Các mẫu thiết kế chính được dạy trong các bài giảng
Mẫu Phương pháp Mẫu
Các mẫu chiến lược
Mẫu gọi lại mẫu
Mẫu proxy
Mẫu trang trí
Trong bài giảng này, chúng ta sẽ giải thích các mẫu thiết kế này một cách rất dễ hiểu, bằng cách tạo từng đoạn mã ví dụ. Chúng ta cũng sẽ học cách áp dụng các mẫu thiết kế đã học vào ứng dụng của riêng bạn.
2. Chủ đề cục bộ
Spring chủ yếu được sử dụng để phát triển ứng dụng web. Các ứng dụng web sử dụng đa luồng để xử lý nhiều yêu cầu cùng lúc. Do đó, các vấn đề đồng thời có thể phát sinh do các luồng xung đột.
Các vấn đề đồng thời và luồng cục bộ được đề cập trong bài giảng
ứng dụng web
đa luồng
các vấn đề đồng thời
Trong bài giảng này, bạn sẽ tìm hiểu về các vấn đề đồng thời phát sinh khi sử dụng Spring và cũng tìm hiểu về khái niệm luồng cục bộ, có thể giải quyết các vấn đề đồng thời một cách thuận tiện. Thread local là khái niệm cần thiết để hiểu cách Spring hoạt động tốt trong môi trường đa luồng mà không có vấn đề đồng thời.
3. AOP mùa xuân
Spring AOP là một công nghệ được sử dụng rộng rãi trong thực tế đến mức gần như kỳ diệu. Mặc dù nhiều nhà phát triển sử dụng Spring AOP, nhưng rất ít người thực sự hiểu cách thức hoạt động của nó.
Không chỉ biết và sử dụng các tính năng của Spring AOP, bạn cần hiểu sâu sắc các nguyên tắc hoạt động của Spring AOP để có thể giải quyết cơ bản các vấn đề khi chúng xảy ra.
Nội dung AOP mùa xuân được trình bày trong bài giảng
Khái niệm và thuật ngữ
Proxy - Proxy động JDK, CGLIB
Nó hoạt động như thế nào
Ví dụ thực tế
Các biện pháp phòng ngừa thực tế
Trong bài giảng này, chúng ta sẽ đi sâu hơn vào tóm tắt đơn giản về các chức năng của Spring AOP và đề cập đến mọi thứ về Spring AOP, từ nguyên tắc hoạt động đến các ví dụ thực tế và các biện pháp phòng ngừa thường gặp trong thực tế.
vân vân
Ngoài ra, chúng tôi sẽ cung cấp cho bạn các kỹ thuật nâng cao để phát triển các container Spring, chẳng hạn như bộ xử lý hậu bean và nhiều mẹo thực tế khác để phát triển các ứng dụng Spring.
Điểm mở rộng trong Spring Container - Bean Postprocessors
Nhiều mẹo thực tế để phát triển ứng dụng Spring
Bài giảng này Trước khi bạn bắt đầu
Vì đây là khóa học nâng cao nên các chủ đề được đề cập trong khóa học này không hề dễ. Tuy nhiên, nếu bạn muốn trở thành một nhà phát triển phần mềm có tay nghề cao, đây là điều bạn phải học ít nhất một lần . Nếu bạn theo đuổi khóa học này đến cùng mà không bỏ cuộc, bạn sẽ thấy kỹ năng phát triển của mình được cải thiện đáng kể và có thể sử dụng Spring tự tin hơn bất kỳ ai khác. Vì đây là một chủ đề khó, tôi đã chuẩn bị bài giảng này rất kỹ lưỡng. Tôi sẽ giúp bạn nắm vững và biến nó thành của riêng bạn.
Bài giảng này Tôi giới thiệu điều này cho những người này
Mùa xuân sâu hơn Tôi muốn biết…
Các khái niệm nâng cao về Spring Cải thiện kỹ năng của bạn bằng cách học Những người muốn phát triển hơn
AOP mùa xuân Tuy nhiên tôi vẫn sử dụng nó…
Spring AOP hoạt động như thế nào Nguyên tắc là chính xác Bất cứ ai muốn hiểu
Mùa xuân để viết mã Tôi muốn hiểu…
Thông qua các mẫu thiết kế Công nghệ bên trong của Spring Bất cứ ai muốn hiểu
Ứng dụng web với Spring Tôi đang nghĩ đến việc thực hiện nó...
Thông qua chủ đề địa phương Các vấn đề đồng thời của Spring Bất cứ ai muốn hiểu
Sẽ tiếp tục trong tương lai Chuỗi chinh phục hoàn chỉnh mùa xuân
Chúng tôi đang chuẩn bị một loạt bài học được thiết kế để giúp bạn nắm vững Spring một cách toàn diện. Chúng tôi sẽ tập trung vào các tính năng cốt lõi của Spring được sử dụng trong các ứng dụng thực tế, mạnh dạn lược bỏ các tính năng lỗi thời hoặc lạc hậu, và cung cấp kiến thức thực tế.
This time it was really long. I was so happy that I could finally understand AOP, one of the three major technologies of Spring. It was like an impregnable technology to me, like pointers in the C language.
I really liked how you explained it step by step this time. I don't think there is a lecture or book that teaches AOP this easily. If you want to learn about Spring in earnest, you should definitely read it.
And as a thank you to Yeonghan, I'm going to write about my Spring developer challenge.
==============
When you try something new, you really need a lot of energy at first.
...(omitted)...
First of all, it's really important to make a study habit. And when it comes to studying development, you have to try everything and code. You can never make it yours by just reading books and listening to lectures.
I recommend that you study consistently for 3-4 hours on weekdays and 8 hours on weekends.
===============
October 2020. I have been a Python developer so far, and I acknowledged that my career was at its limit and wanted to change my career to the Spring backend, so I sent an email to Younghan asking for advice. At that time, I received the above response from Younghan. It was a bit shocking, and I felt that I needed a lot of determination.
In terms of years of experience, I was already at the senior level, and since I only knew a little about Java, the challenge was really difficult. I failed the interview repeatedly. I remember that when I failed the interview with Woowa Brothers early last year, I didn't study well for almost a month and a half.
As Younghan said, 3-4 hours was realistically difficult, but I tried to do at least half of that.
In fact, the content of this lecture was not mentioned often during the interview, but thanks to the content of the lecture that Younghan covered, I was able to develop an eye for looking at backend technology more deeply, which was the most helpful. And the fact that I had to study at a much higher standard. (I think I tried to make the derived content from the lecture my own.)
My efforts worked... I went to one of the Nekaraku Cups at the end of March this year. I still feel inadequate, but I am excited and a little worried because the long 1.5 year preparation period has ended and the opportunity has been given.
When COVID is over and I get used to my new position, I will go and thank you in person. Thank you, Younghan.
I sincerely congratulate you, Pil-hwan.
It is easy for anyone to have momentary passion, but I think it is not easy to make it a habit and systemize it like Pil-hwan and continue it sustainably.
In particular, since the language you have developed so far is not Java and you have a lot of experience, I thought it would be more disadvantageous to get a job at a good company than an average junior developer.
In that sense, I can see how much effort Pil-hwan has put in, and I think it is a great achievement that you have created yourself.
Also, since you have a lot of experience, you must have been asked a lot about how to actually apply it in practice rather than the basics, so I think it is good that you have acquired it beyond simply learning the lecture content to cover these areas.
Since most companies are currently short of developers, I think anyone can get a job at a good company if they study and acquire the corresponding skills, as I advised Pil-hwan.
Lastly, I also had difficult days when it came to getting a job and changing jobs, and I think Pil-hwan's article will be a great help to those preparing for getting a job or changing jobs. I sincerely thank you.
Spring AOP Education Masterpiece. The best lecture
I'm sorry to the instructor that the maximum number of stars I can give is only 5. Thank you so much for the great lecture.
As a side note, if you practice following the instructor's code and then debug the internal implementation logic of SpringObjenesis, CGLIB, and JDK dynamic proxy (ProxyFactory, ObjenesisCglibAopProxy, etc.) separately, you will probably get much more out of it.
Personally, I debugged the moment of initialization with ProxyFactory proxyFactory = ProxyFactory(Component without interface); and went through various procedures according to the rules until I saw with my own eyes that it uses objenesis when creating and returning a proxy object as the result value of getProxy(). If I hadn't watched the lecture, I would not have understood anything because I didn't know the outline of the workflow at all.
Also, I felt that my understanding of Spring AOP greatly improved while separately looking into the process in which the AspectJAutoProxyRegistrar class related to EnableAspectJAutoProxy gets types annotated with @Aspect and uses BeanPostProcessor in the subsequent logic to register proxy objects as Spring beans instead of actual objects.
I am deeply grateful that you showed me the big picture first so that I could understand the detailed operation of the actual logic.
It seems like Younghan's lecture is not about opening a door, but about holding the doorknob and turning it. Thank you for always showing such great lectures.
After reading Toby's Spring Chapter 6, I had a mental breakdown and put the book down for a while, but I'll have to finish this lecture and go back to reading it.
(Review after completing the lecture)
At first, I was overwhelmed by the size of the lecture, which was 125 lectures, but as I listened to it, I understood why the lecture size was so large.
As you said at the end of the lecture, I'll try to get through more code and look at more references.
Now, I'll have to go study other design patterns that I don't understand enough.
I'll come back next time with a better look.^^
This was the first time since Supporters that I contributed to the lecture (manual) even a little bit, so it was a more meaningful advanced lecture than the previous lectures. I hope you will continue to give good lectures :)