🔥 Як працює магія 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
    @Bobocode Жыл бұрын

    👉 Навчання від Bobocode: bit.ly/3IRrJhj

  • @pavloantentyk8221
    @pavloantentyk8221 Жыл бұрын

    Дякую за якісний український контент!

  • @user-fn9jj3il1j
    @user-fn9jj3il1j Жыл бұрын

    Продовжуйте!!!!

  • @pavloantentyk8221
    @pavloantentyk8221 Жыл бұрын

    👍👍👍

  • @ercefwxdx
    @ercefwxdx Жыл бұрын

    Дякую

  • @user-nq4bt9lm2d
    @user-nq4bt9lm2d Жыл бұрын

    Крутий урок! Дякую.

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Дякую вам!

  • @AngeIOk
    @AngeIOk Жыл бұрын

    Гачок

  • @makaka527
    @makaka527 Жыл бұрын

    Топчик

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Дякую!

  • @maximkosey5549
    @maximkosey5549 Жыл бұрын

    Дайте будь ласка посилання на видео про патерни !

  • @Bobocode

    @Bobocode

    Жыл бұрын

    kzread.info/dash/bejne/hGmKo6ydfaWwksY.html

  • @freedman99
    @freedman99 Жыл бұрын

    Привіт. Не можу знайти код на гіті.

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Привіт! Який код?

  • @freedman99

    @freedman99

    Жыл бұрын

    з відео

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Його нема на GitHub

  • @user-nq4bt9lm2d
    @user-nq4bt9lm2d Жыл бұрын

    Було б доречно згадати про використання проксьованих бінів і анотації @Lookup

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Ви використовуєте в роботі @Lookup?

  • @user-nq4bt9lm2d

    @user-nq4bt9lm2d

    Жыл бұрын

    @@Bobocode Так, іноді виникає необхідність. (Не тільки я, в нашій команді)

  • @caffeinejavacode1475
    @caffeinejavacode1475 Жыл бұрын

    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

    @baibula

    11 ай бұрын

    Or switch to Spring 5 and Java 11.

  • @caffeinejavacode1475

    @caffeinejavacode1475

    11 ай бұрын

    @@baibula make downgrade?

  • @baibula

    @baibula

    11 ай бұрын

    @@caffeinejavacode1475 sure

  • @dmytrolisunov4073
    @dmytrolisunov4073 Жыл бұрын