🔥 Як працює магія Spring під капотом? @EnableMagic, BeanDefinition та BeanPostProcessor
👉 Приєднуйся до Bobocode Community: www.bobocode.com/
____________________________________________
Patreon: / bobocode
GitHub: github.com/bobocode-projects
Telegram: t.me/bobocode
LinkedIn: bit.ly/2RWPQF5
Twitter: bit.ly/3vaQiOl
Тарас в LinkedIn: bit.ly/2ElWg8J
Тарас в Twitter: bit.ly/33Pmuwg
____________________________________________
18-те заняття тренувальної програми Ultimate Enterprise Java (2021).
УВАГА! Відеозапис не містить активної частини заняття.
00:00 - Нарізка основних моментів
03:14 - Початок
05:22 - Що робить Spring IoC?
06:40 - Просто про роботу IoC контейнера
07:56 - Чому Spring IoC такий складний?
08:27 - Великі можливості
10:58 - Крайні випадки
11:52 - Який патерн лежить в основі магії?
12:09 - Що таке дизайн патерн Proxy?
13:25 - ОСНОВНІ КОНЦЕПЦІЇ
13:27 - Що таке Bean?
13:47 - Що таке BeanDefinition?
14:27 - Що таке BeanPostProcessor?
15:15 - Що таке BeanFactoryPostProcessor?
15:45 - Демо 1
16:04 - Створюємо Spring-застосунок
17:50 - Створюємо ApplicationContext вручну
19:29 - Як отримати назви всіх BeanDefinition?
20:50 - Як біни Spring реєструє за замовчуванням?
21:30 - Створюємо Spring Boot-застосунок
23:21 - Як біни Spring Boot реєструє за замовчуванням?
23:40 - Порівнюємо початковий контекст Spring і Spring Boot
24:48 - Детальніше про BeanDefinition
25:21 - Дивимося логи під час ініціалізації контексту
29:03 - Як створити власний BeanDefinition?
34:41 - Коли створиться бін по нашому BeanDefinition?
37:56 - Як Spring зберігає біни?
40:20 - Як Spring вирішує циклічну залежніть?
45:27 - Реалізовуємо асинхронний виклик метода за доп. @Async
51:30 - Як працює @Async?
53:55 - Демо 2
54:12 - Створюємо @EnableMethodLogging
56:18 - 🔥 Реалізовуємо свій BeanPostProcessor
01:00:51 - Реалізовуємо метод postProcessAfterInitialization
01:06:04 - Створюємо проксі для біна за доп. CGLib
01:14:51 - Як працюють аннотації @Enable...?
01:19:38 - Приклад BeanPostProcessor
01:23:40 - Який звʼязок між AOP і BeanPostProcessor?
01:25:24 - Що таке умовні біни (@Conditional)?
01:28:25 - @ConditionalOn...
#opensource #java #education
Пікірлер: 24
👉 Навчання від Bobocode: bit.ly/3IRrJhj
Дякую за якісний український контент!
Продовжуйте!!!!
👍👍👍
Дякую
Крутий урок! Дякую.
@Bobocode
Жыл бұрын
Дякую вам!
Гачок
Топчик
@Bobocode
Жыл бұрын
Дякую!
Дайте будь ласка посилання на видео про патерни !
@Bobocode
Жыл бұрын
kzread.info/dash/bejne/hGmKo6ydfaWwksY.html
Привіт. Не можу знайти код на гіті.
@Bobocode
Жыл бұрын
Привіт! Який код?
@freedman99
Жыл бұрын
з відео
@Bobocode
Жыл бұрын
Його нема на GitHub
Було б доречно згадати про використання проксьованих бінів і анотації @Lookup
@Bobocode
Жыл бұрын
Ви використовуєте в роботі @Lookup?
@user-nq4bt9lm2d
Жыл бұрын
@@Bobocode Так, іноді виникає необхідність. (Не тільки я, в нашій команді)
if you get an error 1:12:18 Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @548ad73b add to VM options --add-opens java.base/java.lang=ALL-UNNAMED
@baibula
11 ай бұрын
Or switch to Spring 5 and Java 11.
@caffeinejavacode1475
11 ай бұрын
@@baibula make downgrade?
@baibula
11 ай бұрын
@@caffeinejavacode1475 sure