Евгений Борисов — Spring Patterns

preview_player
Показать описание
Сколько дизайн паттернов вы знаете? 24? 36? 100? А сколько из них вы применяете в реальной жизни? 3? 5? 10?

В этом докладе Евгений покажет, как при помощи спринга можно легко и просто реализовывать наиболее популярные паттерны, с которыми мы сталкиваемся в повседневной жизни. Chain of responsibility, strategy, command, lazy initialization, scala traits, AOP, proxy, decorator и прочие паттерны и концепции, внедренные при помощи спринга, сделают ваш код мягким и шелковистым. А перхоть вашего бойлерплэйта в виде switch-ей, статических методов, наследования, и прочей устаревшей шелухи, посыпется с вашего проекта под радостные крики сонара. Код станет более читабельным, гибким и поддерживаемым. Такой код проще обкладывать тестами и, наконец, это просто красиво.

В этом докладе мы не будем ковырять внутренности спринга или пытаться его кастомизировать. Мы даже не напишем ни одного бин пост процессора или стартера (разве что кастомный класслоадер). Только практические задачи и самый обычный, простой, добрый, пятый спринг.
Рекомендации по теме
Комментарии
Автор

Доклады Евгения можно смотреть бесконечно! Все по делу, легко, доходчиво и с юмором. Спасибо за труд!

pavelbodrov
Автор

"Я звоню этому человеку, а он сейчас рожает 😳"

Евгений Борисов потрясающий человек! Спасибо ему!

xxx---xxx---xxx
Автор

1:58 - Шесть фаз понимания сингалтона: Фаза 1. Студент (шутка про виски)
2:10 - Шесть фаз понимания сингалтона: Фаза 2. Стажёр (приватный конструктор и статический метод getInstance)
3:09 - Шесть фаз понимания сингалтона: Фаза 3. Junior (+synchronized на статический метод)
3:43 - Шесть фаз понимания сингалтона: Фаза 4. Senior (+дабл чек)
4:29 - Оптимизации в Java и в Hotspot
6:23 - Оптимизация Out-Of-Order Execution
9:06 - Шесть фаз понимания сингалтона: Фаза 5. Lead (+volatile)
9:56 - Eager Singleton: Jetbrains - создание синглтона сразу при загрузке класса при инициализации статической переменной
10:29 - Eager Singleton: Enum
11:01 - Singleton - антипаттерн?
11:26 - Эволюция TDD
21:22 - Юнит тестирование
24:32 - Пример использования Mockito
27:26 - фреймворк PowerMock
28:51 - Почему Singleton (через статический метод getInstance) - антипаттерн
30:12 - Правильный синглтон - Spring Singleton!
31:00 - Не ленивые синглтоны и важность Fail-fast
31:49 - Зачем нужен ленивый синглтон
32:19 - Новый способ реализации 3-фазы конструктора (EventListener) из Спринг-потрошителя ч.2.
34:25 - Lazy injection - @Lazy не только над классом, но и над местом инъекции
35:23 - паттерн Chain of responsibility - для обеспечения Open-closed principle
37:17 - паттерн Strategy / Command/ «Никогда не используй Switch!»
44:20 - "We love you, Switch" - как делать правильно. Способ 1 - по id бинов
50:21 - "We love you, Switch" - как делать правильно. Способ 2 - по идентифицирующему методу интерфейса
53:05 - "We love you, Switch" - как делать правильно. Способ 3 - паттерн registry (для бинов, которые создаются после создания контекста)
54:55 - "хак" - инъекция в дефолтный метод интерфейса - для обязательного запуска метода при создании имплементаций
56:19 - Scala traits - перечень аннотаций, которые будут работать в дефолтных методах интерфейсов

strash
Автор

Я человек простой - вижу доклад Е. Борисова, ставлю лайк.

alexhali
Автор

Смотреть доклад и приятно и полезно, спасибо)) Поддержу, что можно было бы и дольше ❤

fur_mur
Автор

Женя Борисов you are the best!
дайте уже ему столько времени сколько сам захочет! :)

Denis-Orlov
Автор

Смотрел как крутой фильм! вот это уровень! мужик ты красавчик!

zwyvuml
Автор

Евгений, огромная благодарность! Очень информативно и с юмором. У нас преподаватель по матанализу похожим образом преподавал. Тоже очень нравилось слушать его лекции. Не скучно, информативно, с живыми примерами.

Devivl
Автор

Просто огонь 🔥 спасибо за доклад Евгению, спасибо автору за видео 👍

epic
Автор

Очень грамотно, информативно и просто. Спасибо!

konstantinchvilyov
Автор

Отношения к разработке на Java у меня никакого нет, но, тем не менее, доклад посмотрел с интересом. Теперь буду знать про сингальтоны и виски)

vmhibos
Автор

Круто, я хоть и php разработчик, но для себя подчеркнул много нового.

viacheslav
Автор

Отдельное спасибо за рефакторинг switch в коллекцию. Порой в спринге и вправду творится магия:)

arthureirich
Автор

44:19 Мне стало грустно после этой фразы "-Это последнее, что я вам покажу".

HowItWorks
Автор

Видос просто огонь. Большое спасибо, Женя !

xandrviking
Автор

паттерн избавления от swith вообще топчик!!!

vmrebur
Автор

Solid
0:01:40 singleton
0:06:00 out of order execution optimization and its effect on double check without volatile
0:11:00 singleton is antipattern. why and why not in context of single responsibility. importance of UNIT tests
0:13:20 про single responsibility
0:20:00 lombok @AllArgsConstructor
0:33:00 Lazy singleton initialization
0:35:00 open close principle and use of chain of responsibility design pattern (list of handlers)
0:37:00 strategy/command design pattern (про switch)
0:53:00 registry design pattern (trick with @autowired and default method interface)

savar
Автор

Я не понял про Singleton, а именно причина, почему нужно делать volatile. Насколько я знаю, для synchronized работает happens before, поэтому singleton == null будет работать с заново загруженной переменной из heap. А проблема как раз в том (именно, почему нужно volitile добавить), что в строке singleton = new Singleton() может раньше вернуться ссылка на объект, в котором могут быть поля, которые не final, и они могут быть еще не проинициализированы.

uhnbvjf
Автор

Евгению можно давать время сколько ему нужно!!!! Что бы он все дописывал

lisafox
Автор

11:40 TDD for me is a Type Driven Development :)

Software.Engineering.in.Action