Тёмный

Евгений Борисов - Spring-потрошитель, часть 2 

JPoint, Joker и JUG ru
Подписаться 53 тыс.
Просмотров 197 тыс.
50% 1

Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург + трансляция).
Подробности и билеты: jrg.su/Ypf1HW
- -
. . . . Евгений Борисов - Spring-потрошитель, часть 2
Встреча JUG.ru
Санкт-Петербург, 26.06.2014
Казалось бы, зачем знать, как работают внутренности спринга для того, чтобы им пользоваться? Работает? Ну и ладно.
Но как всегда, для эффективной работы с фреймворком, неплохо бы понимать, что находится под капотом. Ведь только понимая его внутреннее устройство, вы сможете пользоваться Спрингом на полную мощность, адаптировать его под нужды вашего проекта, добиться максимальной производительности и решить любую проблему самостоятельно, не обращаясь в Spring-сервис-центр.
Итак, несколько вопросов про Spring, которые мы рассмотрим в рамках данного доклада (с примерами к каждому):
Насколько Spring влияет на производительность вашей программы?
Что входит в жизненный цикл спринга?
Как устроен ApplicationContext?
«Вот это на Spring сделать нельзя» - а может можно?

Наука

Опубликовано:

 

2 июл 2014

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 73   
@strash1692
@strash1692 2 года назад
0:00 - BeanFactoryPostProcessor 2:58 - @DeprecatedClass через BeanFactoryPostProcessor 10:43 - способ через аннотации @Component 12:24 - ClassPathBeanDefifnitionScanner 13:08 - способ через Java Config 16:27 - метод @Bean это не метод Java, это определение бина, просто имеет формат метода Java 16:47 - ConfigurationClassPostProcessor - особый BeanFactoryPostProccesor (! не bpp, а именно bFpp !) 17:45 - Groovy Config 19:54 - Пишем свой контекст 23:36 - Пишем свой контекст: context.properies 24:53 - Пишем свой контекст: PropertyFileApplicationContext 30:00 - Обновление Prototype в Singleton 38:06 - Обновление Prototype в Singleton: Prototype - Prototype 40:58 - Обновление Prototype в Singleton: Решение 1 (не правильное, через инжект ApplicationContext) 42:50 - Обновление Prototype в Singleton: Решение 2 (решение 50/50, через proxyMode = ...TARGET_CLASS, т.к. другая крайность - при любом обращении к полю - новый бин) 43:50 - Обновление Prototype в Singleton: Решение 3 (через фабричный метод и абстрактный класс) 46:53 - Написание кастомного Scope 59:16 - Benchmarks (Правильный бенчмарк - использовать сторонние инструменты, а не "изобретать велосипед", иначе ложный результат.) 1:04:27 - Benchmarks. Lookup бина. 1:05:06 1:05:13 - Benchmarks. Создание бина. 1:07:34 XML (700) < Annotation (2100) < Java Config (5100) 1:07:40 - Benchmarks. Инжекшн. 1:08:24 Annotation (150) < XML/Groovy (700 - 900) < Java Config (3000) 1:09:57 - Benchmarks. Создание объекта с прокси. 1:10:28 - (3,3) < DP (1800) < CGLib (4000) 1:10:48 - Benchmarks. Инвокация метода через прокси. 1:11:47 - (3,3) < CGLib/DP (10) < Spring Aspect (250)
@dmitriyn9462
@dmitriyn9462 2 года назад
Я только удивлён, у такого грамотного и бесценного материала всего 130к просмотров... В то же время у какого-нибудь мусора миллионы))) Автору огромное спасибо!
@airat2010
@airat2010 Год назад
поэтому основная масса и живет по течению. и получает деньги чтобы не умереть . А это для Java разработчиков - это гордая профессия
@protiv_bio
@protiv_bio 4 месяца назад
@@airat2010 Java, это Java, на лучшем языке писать имеешь право
@user-xq6py9re4c
@user-xq6py9re4c Год назад
когда 10 минут видео пересматриваешь 10 раз)
@user-qg3kx2cq7d
@user-qg3kx2cq7d 7 месяцев назад
Жека, спасибо большое! Смотреть интересно и увлекательно. Дай Бог тебе здоровья)
@user-if6ro8gp8m
@user-if6ro8gp8m 6 лет назад
Чертовский интересно, полезно, грамотно, живо. Спасибо за труд!
@Twitteron_
@Twitteron_ 2 месяца назад
Тёска, спасибо, ты лучший учитель по спрингу!
@andrey1983
@andrey1983 2 года назад
Спасибо за отличный доклад!
@user-vm7re9bu9r
@user-vm7re9bu9r 2 года назад
очень интересные примеры, которые наводят улыбку и поднимают настроение)
@alexei3366
@alexei3366 Месяц назад
На этом приложении понятно , что такое прототайп и что такое сингелтон 🙂 Зачет!
@user-ix2cf5ny1q
@user-ix2cf5ny1q Год назад
Спасибо большое эту потрясающую лекцию. Очень хотелось бы попасть на офлайн конференцию к Евгению!
@lexbekker
@lexbekker Год назад
Легенда
@dimitryrusu4022
@dimitryrusu4022 Год назад
Мой мозг от этой лекции: Я ЖИДКИЙ
@Daniel-mo1iy
@Daniel-mo1iy 9 месяцев назад
Да! Я тоже сразу не понимаю, первую лекцию смотрел раза 3)
@user-ib7vx3yc4i
@user-ib7vx3yc4i Месяц назад
просто супер
@mrtoot3474
@mrtoot3474 3 года назад
кстати, Color можно было еще вот так определить @Autowired private javax.inject.Provider color; и потом где нужно color.get();
@evileye100
@evileye100 3 года назад
всю лекцию смотрел, не стоит ли у меня ускоренное воспроизведение видео, не стояло...
@looklearn4745
@looklearn4745 3 года назад
Это для меня очень важный фактор оценки, чаще всего приходится ставить скорость на 1.5, потому что спикеры мямлят. Тут не пригодилось, отличная подача
@Max-wn2gd
@Max-wn2gd 2 года назад
кому-нибудь удалось первый пример с заменой класса воспроизвести ? У Евгения на 9:30 возвращается нужный бин и вызывается метод, а у меня возвращется null
@thestory2417
@thestory2417 Год назад
Legenda!
@romandzhadan5546
@romandzhadan5546 2 года назад
top
@mykytapiskarov7291
@mykytapiskarov7291 3 года назад
43:00-44:00 Не понимаю, почему использование proxyMode = target class у бина Color приводит к тому что при получение ColorFrame его зависимость Color будет каждый раз разная По логике ColorFrame должен иметь один и тотже цвет, только этот цвет по сути прокси через cglib
@mykytapiskarov7291
@mykytapiskarov7291 3 года назад
Отвечаю на свой коммент, дело в комбинации скопа прототайп и использовании прокси. При вызове любого метода прокси обьекта вначале изпользуя TargetSource получается объект что должен проксироватся. При чем для получения target обьекта используется beanFactory.getBean, что приводит к создании нового обекта, тк скоп бина в данном случае прототайп
@Lecomptby
@Lecomptby 3 года назад
@@mykytapiskarov7291 как ты узнал?)
@mykytapiskarov7291
@mykytapiskarov7291 3 года назад
Harv two погулял по соурс коду спринга
@iharbakhanovich
@iharbakhanovich Год назад
ссылка на гит есть?
@dotnet2012
@dotnet2012 3 месяца назад
Доклад вышел 26.06.2014, а 04.09.2014 вышел Spring 4.1 где появилась аннотация @Lookup, которая по сути делает то же самое что и Евгений на 43:56
@smormanyak
@smormanyak 3 года назад
Этому человеку надо книги писать ) Есть что-то подобное почитать?
@user-bh9hx3ue7i
@user-bh9hx3ue7i 6 месяцев назад
Как он все понимает, научите меня, буду весьма благодарен
@m0naco608
@m0naco608 Месяц назад
Он разработчик со стажем больше 20 лет )
@timon59388
@timon59388 2 года назад
Приятная атмосфера в аудитории шутят, подсказывают, майки требуют
@dreamer_vi905
@dreamer_vi905 2 месяца назад
Прошло 9 лет. Про создание бинов через Groovy так и не слышал.
@tusman4ik
@tusman4ik 20 дней назад
По факту:) Хз, мне сразу показалось, что это не удобно
@UnitedFeodor
@UnitedFeodor Год назад
45
@nickb.9677
@nickb.9677 3 года назад
Benchmark, кстати, отнюдь не восьмилетний =) Цифра 8 на этикетке к возрасту никакого отношения не имеет.
@burningass5516
@burningass5516 2 года назад
Я, конечно, всё понимаю, но откуда у студента деньги на 8-летний виски?
@DimaTiunov
@DimaTiunov Год назад
Уже 10 летний)
@melukandrew
@melukandrew 3 года назад
не вижу ничего плохого, что бы автовайрить контекст в синглтон и из него получать Бин. Да больше связность, но больше контроля, более предсказуемо и очевидно будет работать, в продакшене только такое и встречал. Смущает, что если вызвать по ошибке гетколор 2 раза в одном методе, то будет 2 разных инстенса, это не очевидно в месте вызова, потом можно долго искать причину баги.
@watchyourstepskid
@watchyourstepskid 3 года назад
Сколько людей без масок, ужас
@whoamiukr
@whoamiukr 2 года назад
чудом выжили!
@VadimMikhnevych
@VadimMikhnevych 9 лет назад
Отличный метод раздачи футболок! :)
@zugzug90
@zugzug90 6 лет назад
ОГНЕННОЕ ВИДЕО! Жека - терминатор!
@igore4ek1988
@igore4ek1988 8 лет назад
"Какая разница между Spring, String и Swing?" )))
@aslankussein3237
@aslankussein3237 7 лет назад
во второй букве
@ip4989
@ip4989 3 года назад
Swing это когда парами меняются
@randomaccess4402
@randomaccess4402 3 года назад
@@ip4989 нет, это графическая либа в джаве
@ip4989
@ip4989 3 года назад
@@randomaccess4402 если я смотрю видео по спрингу, каков шанс, что я не знаю что такое свинг?)
@NeptuneCasto
@NeptuneCasto 3 года назад
@@ip4989 Зависит от того в какой год отправили терминатора)
@alexanderyurlov8319
@alexanderyurlov8319 8 лет назад
Интересно слушать, хорошая подача! А есть код программы? посмотреть бы повнимательнее.
@andrei4145
@andrei4145 8 лет назад
Эпично
@ruslansitdikov1489
@ruslansitdikov1489 4 года назад
А когда пропертя загружаются? И можно ли их заюзать в postProcessBeanFactory?
@inbuckswetrust7357
@inbuckswetrust7357 4 года назад
java когда чтобы отнять два времени нужно гуглить ;)
@user-sy4wu9er5v
@user-sy4wu9er5v 7 лет назад
50-60 минуты, где создается Scope "periodical", я воспроизвела этот пример, долго смотрела на работающую программу и обнаружила, что через 20-30 секунд Screensaver перестает менять цвет. Время смены цвета в коде я указала 2 секунды. Кто также воспроизводил код, понаблюдайте подольше за работающей программой, возникнет ли у вас такое же странное поведение?
@GoodGuyFinishFirst
@GoodGuyFinishFirst 7 лет назад
Думаю проблема в том что метод getSecond() возвращает секунды в минуте, и когда now() доходит до конца минуты то секунды сбрасываются в ноль, и разность now().getSecond() - someTime.getSecond() уходит в отрицательные значения а значит меньше 3. Надо пользоваться duration-ами. Как написал Igor Salnikov выше.
@user-sy4wu9er5v
@user-sy4wu9er5v 6 лет назад
Вот спасибо!
@NiyamaFoxy
@NiyamaFoxy Год назад
Всё ещё актуально?
@grigorym3125
@grigorym3125 10 месяцев назад
Проблема в том, что метод getSecond() возвращает кол-во секунд от начала минуты (то есть значение от 0 до 60), соответственно смена цвета будет не каждые три секунды, а как повезет (например если первый вызов был в 10:20 а следующий в 11:10, то цвет не сменится)
@MrMaksimsergeevich
@MrMaksimsergeevich 5 лет назад
Кто в итоге ящик пива выиграл? Барух или Жека?
@oleksandrdyachuk3951
@oleksandrdyachuk3951 6 лет назад
Я хочу от него ребенка!)))
@Ivan54r
@Ivan54r 5 лет назад
для это нужно переписать beanpostprocessor
Далее
Основы работы с Spring Security
1:56:11
Просмотров 141 тыс.
Евгений Борисов - Power of Gradle
1:19:56
Евгений Борисов - Spring Patterns
56:38
Просмотров 127 тыс.