Евгений Борисов - Spring Patterns для взрослых

2020 ж. 17 Жел.
162 085 Рет қаралды

Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября, Санкт-Петербург
- -
Сколько дизайн-паттернов вы знаете? 24? 36? 100? А сколько из них вы применяете в реальной жизни? 3? 5? 10?
В этом докладе Евгений покажет, как при помощи Spring можно легко и просто реализовывать наиболее популярные паттерны, с которыми мы сталкиваемся в повседневной жизни. Chain of responsibility, strategy, command, lazy initialization, scala traits, AOP, proxy, decorator, и прочие паттерны и концепции, внедренные при помощи Spring, сделают ваш код мягким и шелковистым. А перхоть вашего boilerplate в виде switch-ей, статических методов, наследования, и прочей устаревшей шелухи, посыпется с вашего проекта под радостные крики сонара. Код станет более читабельным, гибким и поддерживаемым. Такой код проще обкладывать тестами и, наконец, это просто красиво.
В этом докладе мы не будем ковырять внутренности Spring или пытаться его кастомизировать. Мы даже не напишем ни одного beanpost-процессора или стартера (разве что кастомный classloader). Только практические задачи и самый обычный, простой, добрый, пятый Spring.

Пікірлер
  • Кажеться этот человек (Евгений Борисов) научил весь СНГ понимать спринг, сейчас эти вещи, что он говорит нужно само собой знать, а раньше наверно только крутые дядьки это знали и учили молодых где то, памятник при жизни ему , спасибо за ваши труды, буду рад смотреть новые конференции и всем рассказывать какой крутой мужик, этот Борисов Евгений

    @poloplopol9791@poloplopol97915 ай бұрын
  • 00:09:34 Singletons 00:10:25 Singletons Концепция и Паттерн 00:34:55 Тесты - Как поднять контекст только часть контекста - @ComponentScan(lazyInit = true) 00:46:05 Преимущество field injection над constructor через @Autowired 01:00:30 Open Closed principle broken 01:25:13 GenericBeanDefinition 01:37:18 Strategy and Command 02:00:08 Реализация механизма добавления новых бинов в контекст без перезапуска приложения 02:26:11 AOP 02:30:00 Динамическая реализация pointcut 02:39:44 Patterns which are easy with Spring

    @polyackov_ot@polyackov_ot2 жыл бұрын
  • Вижу Евгения - ставлю лайк

    @user-qw1wh4dl2m@user-qw1wh4dl2m3 жыл бұрын
    • вижу лайк для Евгения - ставлю лайк )

      @necromancer151@necromancer1513 жыл бұрын
    • @@necromancer151 вижу лайк лайка для Евгения - ставлю лайк)

      @citizen4_223@citizen4_2233 жыл бұрын
    • Пишите тогда сервис, который будет собирать деревом все комментарии где используется слово лайк, и курсивно его обрабатывать... ну вы поняли)))

      @opalev@opalev3 жыл бұрын
    • Вижу лайк ради лайка - ставлю дизлайк.

      @oeaoo@oeaoo2 жыл бұрын
  • Обычно слушаю доклады на скорости 1.25, но Евгения приходится ставить на 0.75 :))

    @redthebread@redthebread3 жыл бұрын
    • слушаю на 1.75 и норм

      @abstractcoder1556@abstractcoder15562 жыл бұрын
    • Смотрю на х3, как и все другие видосы, нормально

      @zhennik263@zhennik2632 ай бұрын
  • Икона, чем больше работаю, тем больше понимаю из конференций Борисова. ❤

    @alexricher2554@alexricher25549 ай бұрын
  • Уже дошло до того, что на интервью в ответ на вопрос говоришь про бинпостпроцессор и Борисова - и интервьювер доволен

    @andd3dfx@andd3dfx3 жыл бұрын
    • И что? Неадекватный интервьюер значит. Не Евгений же в этом виноват.

      @user-ss2rj4wz5s@user-ss2rj4wz5s3 жыл бұрын
  • Божественно, особенно вторая часть доклада. Огромное спасибо организаторам

    @MrMaksimsergeevich@MrMaksimsergeevich3 жыл бұрын
  • Спасибо, Евгений, как всегда интересно.

    @Anna-tl2tb@Anna-tl2tb3 жыл бұрын
  • Сижу работаю из дома, фоном переслушиваю лекции Евгения. И тут на 51:00 такая прям совсем домашняя атмосфера :) Улыбнуло.

    @silentadvisor@silentadvisor Жыл бұрын
  • Черт, когда Борисову будут давать достаточно времени и не гнать уже! Человек творит! Это то же самое что вырезать из Властелина колец почти час времени, для чего, хер знает, люди пришли насладиться фильмом, а не на работу, что бы уйти побыстрее)

    @sapereaudeorbistertius1509@sapereaudeorbistertius15092 жыл бұрын
  • Доклад - пушка/бобма!💣 Спасибо большое, Евгений & Co🤝

    @Rostik13.96@Rostik13.962 ай бұрын
  • Как всегда круто. Спасибо Евгений за доклад

    @sergeyivin6816@sergeyivin6816Ай бұрын
  • Как всегда прекрасная дотошность 🙏🏻🎉

    @juliarekamie@juliarekamie3 жыл бұрын
  • смотрится на одном дыхании, Женя заряжает своей энергией. класс!!!

    @user-uw7zm2og3u@user-uw7zm2og3u4 ай бұрын
  • Отличный доклад, спасибо!

    @ovlkv@ovlkv3 жыл бұрын
  • Спасибо огромное! Очень круто!

    @dmitrybekker1194@dmitrybekker11943 жыл бұрын
  • Женя как всегда крут ) Спасибо!

    @BigBigLeo@BigBigLeo3 жыл бұрын
  • Полностью посмотрел и законспектировал самые интересные места. Огромное спасибо! Однозначно лайк! :-)

    @azatakhunov6061@azatakhunov60613 жыл бұрын
  • Отвечая на вопрос в описании: все что есть в докладе применяю. Этот доклад возможно будет хорошим стартом для кого-то. Евгений как всегда на высоте.

    @nikitaproit@nikitaproit3 жыл бұрын
  • Евгений и ребята , как всегда огромное спасибо за отличный доклад 😊🥳

    @xandrviking1113@xandrviking11138 ай бұрын
  • Фонд золотых цитат: "Все что угодно может быть бесконечно" )))))) Евгений, каждый доклад очень интересно слушать, спасибо!

    @dmitriypronichev7048@dmitriypronichev70483 жыл бұрын
  • Евгений, спасибо ) очень интересно

    @linermgn@linermgn3 жыл бұрын
  • Спасибо, jeka borisov!

    @aibeka.9453@aibeka.94533 жыл бұрын
  • Евгений, как всегда на высоте, спасибо. Вот бы конференцию провели, где он не был бы ограничен по времени.

    @mushen6987@mushen69873 жыл бұрын
    • Тогда это будет самая длинная конференция в мире в одно лицо - т.к. Евгений в предмете прекрасно разбирается, любит этим знанием делиться и очень при этом увлекается, то остановится конференция, скорее всего, только после того как он сознание от истощения потеряет... Ну или жена заругает ))))

      @Shaloplay@Shaloplay3 жыл бұрын
  • 6:57 - старт

    @user-do1ok5zw3u@user-do1ok5zw3u3 жыл бұрын
    • 9:36 старт

      @cbot4425@cbot44253 жыл бұрын
  • "Юль, батарея!" на 0:51:02

    @solovey61@solovey613 жыл бұрын
    • covid

      @VadimBolshakov@VadimBolshakov3 жыл бұрын
  • Опа, супер - будет, что глянуть на выходных. Лайк сразу поставлю

    @user-hq6nm2tf6j@user-hq6nm2tf6j3 жыл бұрын
  • отличная перезентация. почерпнул много интересного. Епаму привет! ) Жаль не на англ - поделился бы с коллегами

    @necromancer151@necromancer1513 жыл бұрын
  • Евгений, с вашими скилами выступления, вам бы народ про DDD просвещать, то цены бы вам не было :-) Без сарказма, правда очень жду. Я как для себя открыл синюю книгу про DDD, так просто не могу понять почему люди до сих пор так мало знают про такие базовые, но очень важные идеи, которые попросту _всюду_ в микросервисах, о которых вы, кстати, упомянули в начале видео, но вскользь. А про синглтоны мы уже слышали от вас много раз, но все равно спасибо.

    @snowy0110@snowy01103 жыл бұрын
    • умник чтоли? сам бери и просвещай, я 100% уверен что ты по DDD и TDD не пишешь

      @basicfuckboy4848@basicfuckboy48482 жыл бұрын
    • DDD == domain driven? Тоже очень интересна эта тема

      @qweezique@qweezique2 жыл бұрын
  • Обожаю Евгения, почти как бедкомедина

    @Ivan54r@Ivan54r3 жыл бұрын
  • Ну всё - работа встала!!!

    @s.portowyi15@s.portowyi153 жыл бұрын
  • в примере с инжектом листа есть вопрос (но я не знаю, как его задать, ибо не попасть мне в телегу): а есть ли разница, будет ли каждый элемент листа прототайпом или синглтоном? ибо, так как мы ищем по имени бина, а бинов могло быть уже создано несколько на момент инжекта, не упадет ли это всё из-за "multiple bean error блаблабла"?

    @esselesse@esselesse3 жыл бұрын
  • Начало с 6:55

    @daniilbaev2898@daniilbaev28983 жыл бұрын
  • Предлагаю называть концепцию "синглтон" "сингл инстансом", чтобы устранить путаницу. При этом синглтон это одна из имплементаций синг инстанса.

    @igorlu@igorlu3 жыл бұрын
  • В конце 2022 с ностальгией вспоминаются ковидные проблемы 2020 года, какое было прекрасное время

    @alexandr9461@alexandr9461 Жыл бұрын
  • наушники sony wh-1000xm3?

    @mitinart@mitinart3 жыл бұрын
  • 1:42:08 230 кейсов разбиваются на классы всего двумя тушками студентов-джунов и не за полгода, а за две ночи, потому что студенты обычно выбираются упоротые, которые ночь не спят и день не спят и не едят, а только кодят до полного выполнения задачи. Я помню, мне как-то выдавали задачи из техдолга в начале проекта, когда ещё работал джуном(правда тогда и понятия такого не было ещё, но суть та же) и там попадался switch внутри switch - это было весело разбивать и реально никто не сказал, что не надо упарываться, что народ работает неспеша, по 8-9 часов, что не нужно 2 дня без продыху кодить, но понял я это наверное лет через 5.

    @AlexMolchanov90@AlexMolchanov90 Жыл бұрын
  • 59:10 Я правильно понимаю, что тут ошибка? Когда spring выбирает beanName он пробегает по всем аннотациям бина и ищет там value, не только на аннотацию @Component смотрит

    @user-wf7no6wm5l@user-wf7no6wm5l3 жыл бұрын
  • Евгений, у Вас со звуком проблема была из-за... Точнее проблема была не со звуком, а с производительностью, судя по количеству свёрнутый программ и тому, что при подключении зарядки проблема полностью исчезла. Если работаете под запись, лучше всегда ноут подключать к сети

    @johnconstantine6331@johnconstantine6331 Жыл бұрын
  • Те синглтоны и свичи - это бэд патерн, а дефолты со спринг аннотациями в интерфейсах - это образец сингл респонсобилити и вообще правильного дизайна? ;) А вообще спасибо за контент, понравился доклад.

    @TsArtemi@TsArtemi3 жыл бұрын
  • 47:30 а что если объявить конструктор ломбока в спринге антипаттерном

    @vlera4198@vlera41984 ай бұрын
  • воу воу, а мне как раз прошлый доклад по спринг паттернам оказался недостаточным)

    @izmailovlz@izmailovlz3 жыл бұрын
  • Евгения после этого вебинара предадут анафеме ))))

    @monsstric@monsstric3 жыл бұрын
  • 3 часа на одном дыхании

    @adverte123@adverte1233 жыл бұрын
  • 16:07 о каком докладе идёт речь? Что за доклад о том, что "мы в спринге похоронены"?

    @user-tr5vo6le8f@user-tr5vo6le8f3 жыл бұрын
  • 40:46 вот может тогда не писать логику в сервисах, чтобы для её тестирования нужно было поднимать контекст? Плюс вопросец, а разве если у тебя будут разные конфигурации для тестов, то это будет плохо, потому что будут для тестов разные контексты подниматься. Вроде же контекст кешируется для тестов нет? А если это так и есть разные конфигурации контекстов, то это будет медленнее работать.

    @gingun95@gingun9515 күн бұрын
  • И всё таки, default в интерфейсе сделан для того чтобы поддерживать старый код, когда необходимо расширить интерфейсы (а в старом коде вы этого не сделаете). Другими словами, дефолтовые методы в интерфейсах, для того чтобы расширять интерфейсы библиотек безопастно с точки зрения поддержки ранее написаного кода на них (как это делает java для коллекций добавляя stream функционал). Тут же явно мы не пишем библиотеку, а пишем конечный продукт. Поэтому в данном случае лучше было сделать абстрактный класс для само регистрации, а не костылить default метод (который ещё и со спрингом в придачу!).

    @AlexJPep@AlexJPep3 жыл бұрын
  • @InjectList({Баня.class, Водка.class, Гармонь.class, Лосоль.class})

    @guai9632@guai96323 жыл бұрын
    • super.Девки

      @caffeinejavacode1475@caffeinejavacode14753 жыл бұрын
  • @Lazy надо ставить над сервисом и над местом инъекции тогда будет работать

    @MaxPetrischev@MaxPetrischev2 жыл бұрын
  • в 2:00:00 у нас есть перевод list to map бинов, все классно работает. А как это протестировать. К примеру у меня 20 таких бинов. И как сделать чтобы они появились в тесте. Обычно я делаю @Spy. Но я хочу протестировать что все эти бины окажутся в map. Для этого можно конечно их всех перечислить, но тест получится бесполезным. Сейчас я придумал через reflection в тесте найти всех предков. Есть ли лучше решение?

    @leonidiusnovikov188@leonidiusnovikov1883 жыл бұрын
    • точно такая же проблема возникла, через @Import({ExportServiceLevelOne.class, ExportServiceLevelTwo.class, ExportServiceLevelThee.class}) решил сначала, потом сделал свой ImportBeanDefinitionRegistrar через него по типу интерфейса от которого наследованы классы в мапе регистрировал бины и оно работало. В ролике есть. Но! Мне под каждого теперь рестрары писать? Тем более что они только для тестов нужны.. Да и в @Configuration классе он глаза мозолит.... Переписал регистрар с дженериками, но как его подключить и передать тип класса.. в @Import не понятно...

      @opalev@opalev3 жыл бұрын
  • мастхэвный доклад для тех, кто работает со спрингом уже скинул его всем своим друзьям-программистам

    @maxlich9139@maxlich9139 Жыл бұрын
  • Тема "своя Spring Data" интересна! в стандартном спринге не поддерживаются графовые БД ...

    @user-kl7cw6rx2p@user-kl7cw6rx2p3 жыл бұрын
    • Давно используем Spring Data Neo4j

      @GameDeveloper1@GameDeveloper13 жыл бұрын
  • Нападки Евгения на синглтон меня смутили. intellij idea которую Евгений демонстрировал, сплошняком построена на классических синглтонах. Это видно из документации о том как плагины писать к идее. И все же, почему kotlin генерирует из object прямой singleton "анти-паттерн" (так же как и скала) и никому дела нет до этого? На этот прямой вопрос создатели kotlin лишь говорили, что следовали по пятам scala, а scala в свою очередь лишь только хотела заменить static на что-то более объектно-ориентированное, согласно моей дырявой памяти и моему гуглению года полтора назад. Для меня этот вопрос все еще открытый. Если практично подходить к проблеме, для меня классический синглтон имеет лишь следующие проблемы: * неявная зависимость (когда у меня неявная зависимость это spring transactional management, то это прозрачно для меня и для моей бизнес логики, но когда неявная зависимость это синглтон, который представляет собой бизнес идею, то это уже тяжело для моего тупого мозга, в особенности если это два-три-четыре жирных таких синглтона) * один класс на весь jvm (но ведь я хочу много инстансов в моих тестах, чтобы каждый тест был изолированным)

    @snowy0110@snowy01103 жыл бұрын
  • Интересная идея с lazy component scan, при случае попробую для тестов (я как раз из тех, кто пишет конфигурацию и помечает мок бин @Primary =)). По поводу Знахарей и Лечения, тут очень похоже, что вы решаете задачи бизнес логики средствами фреймворка - когда Знахарь выбирает, какие виды лечений он применяет, то делать это спрингом - а тем более таким нестандартным способом - это немного не комильфо, на мой взгляд. Кстати, а в чем была бы проблема для знахаря просто сделать inject через конструктор и по списку с Лечениями сделать .filter { it::class in setOf(Баня::class, ...) } ?

    @antonlakida7999@antonlakida79993 жыл бұрын
    • идея конечно интересная, но не работает к сожалению

      @java_couch@java_couch Жыл бұрын
  • 1:47:09 - Что обычно делает дефолтный целитель? - Он говорит UnsupportedOperationException.

    @lasta1r@lasta1r3 жыл бұрын
  • 1:03:40 А почему нельзя было сделать пустой интерфейс и наследоваться им от Лечения назвав Алкоголь и не указать его в List?

    @DimaTiunov@DimaTiunov Жыл бұрын
  • Как на всё это написать тесты?

    @TheRrash84@TheRrash843 жыл бұрын
    • да пздц)))

      @opalev@opalev3 жыл бұрын
  • Хорошо но мало (

    @igorlu@igorlu3 жыл бұрын
  • 37:35 Подтверждаю, все так и происходит.

    @zentox8480@zentox84809 ай бұрын
  • последняя секунда: Раунд!

    @zuzu-wz9be@zuzu-wz9be Жыл бұрын
  • Please explain in English video

    @narwadikar@narwadikar3 жыл бұрын
  • Женя крут🔥👍💪

    @drspeeddv2768@drspeeddv27683 жыл бұрын
  • хм вот lazy в тестах это то что я искал , у самого в проде для каждого теста есть свой конфиг и при добавлении новых бинов все конфиги падают и хоть убей в оф доках я не нашел как с этим люди борятся

    @almasabdrazak5089@almasabdrazak50892 жыл бұрын
    • lazy это какая то дичь, мало того что не работает, так еще нужно понять, какие бины реально нужны, если тестируется сервис с кучей инжектов - это просто нереально использовать.. гораздо проще заварить нужные сервисы и потом мокнуть те , которые попросит тест

      @java_couch@java_couch Жыл бұрын
  • А есть ли Spring Patterns для детей?

    @sublimelolka4669@sublimelolka46693 жыл бұрын
  • мой коммент со ссылкой на гитхаб попал в спам фильтр похоже(( админы канала, можете там перепрочитать и без ссылки вставить вопрос, а то я заново это всё не опишу, ну никак!

    @opalev@opalev3 жыл бұрын
  • Ленивое сканирование в продакшене может помочь, если из-за проблем в инфраструктуре какой-то бин не сможет инициализироваться.

    @blaze7979@blaze79793 жыл бұрын
    • не поможет

      @java_couch@java_couch Жыл бұрын
  • Евгений, на 26:33 опечатка на слайде "speacial"

    @VladlenKaraush@VladlenKaraush3 жыл бұрын
  • А почему спринг постоянно выдает предупреждение на @Autowired? Всегда пишет, ну, дружок, ты давай-ка лучше через конструктор это сделай.

    @adlhbgreqk@adlhbgreqk3 жыл бұрын
    • Потому что через конструктор бест практис

      @user-if3qj9wm5j@user-if3qj9wm5j3 жыл бұрын
    • @@user-if3qj9wm5j очень спорный бест практис. Не вижу существенных плюсов, кроме fail fast, да и не такая частая проблема - отсутствие нужного бина

      @SkyAntins@SkyAntins3 жыл бұрын
  • Эх) сколько живу работаю все эти паттерны все больше превращаются в антипаттерны)

    @aleksay2142@aleksay21423 жыл бұрын
  • top

    @romandzhadan5546@romandzhadan55462 жыл бұрын
  • 00:59:24 - нашествие НЛО в вебку Кирилла

    @frimay1@frimay14 ай бұрын
  • В сотый раз про синглетон , зачем , можно же про что-то более актуальное поговорить в 2020.

    @sshks10@sshks103 жыл бұрын
    • Может потому что бесплатно?) Все более актуальное - платно)

      @user-if3qj9wm5j@user-if3qj9wm5j3 жыл бұрын
  • Для меня Женбка - оргазм с первого раза)

    @ruslansimakov9087@ruslansimakov90873 жыл бұрын
  • В магазах вдруг пропал Синглтон и я понимаю кто виноват), скрытая реклама?

    @user-jk9yz7gi1h@user-jk9yz7gi1h3 жыл бұрын
  • Интересный акцент у Борисова. Удивляет что он вместо приложения говорит - аппликация. Тут у меня, большого любителя искусств начинается kernel panic головного мозга :)

    @markkovalyov9492@markkovalyov94923 жыл бұрын
    • Это Израильский акцент :) на иврите не говорят "приложение", говорят "апликация" :)

      @anton-tkachenko@anton-tkachenko3 жыл бұрын
  • 59:20

    @Runa_Nura@Runa_Nura3 жыл бұрын
  • Думаю: Надо же у Евгения речь обычная стала. А оказывается стояла скорость 0.75.

    @andreymanaenko1638@andreymanaenko16383 жыл бұрын
  • иногда @Lazy(false) тоже турба

    @des7710@des77103 жыл бұрын
  • 34:37

    @UnitedFeodor@UnitedFeodor Жыл бұрын
  • 47:21 еще при field injection используется reflection, что не очень хорошо

    @maxlich9139@maxlich9139 Жыл бұрын
  • теперь я тоже буду говорить синглЬтон )

    @antabis@antabis3 жыл бұрын
    • "сингАЛЬтон"

      @stanislavkuzmin2611@stanislavkuzmin26113 жыл бұрын
    • @@stanislavkuzmin2611 спасибо. точно!

      @antabis@antabis3 жыл бұрын
  • Тодд Говард и Кирилл Толкачев это один человек?

    @Ariel-wn1cr@Ariel-wn1cr3 жыл бұрын
  • Здравствуйте. Лекция очень полезная. Хотите ли немного критики от пенсионера, который в JAVA с 95 года? Когда она еще была только в Нетскэйепе? Складывается впечатление, что spring настолько крут, что тривиальные паттерны с ним невозможно реализовать без плясок с бубном, описанным в этой лекции. Безусловно это не так. И без спринга эти паттерны реализовывали. И как спринг смог этому помешать? Другой вопрос насколько помогает ? Просто автор почему то выбрал самый низкоуровневый способ реализации паттернов. Для того чтобы понять как работает спринг? Ок! Но ведь не только классы должны отвечать Single Responsibility Principal. В итоге из за деревьев леса плохо видно. И такой еще вопрос. Зачем похоронили XML context? Ведь все, что автор здесь рассказывал, на XML сделать можно "левой ногой". List. Map. Для удобства программистов? С каких пор удобство программистов, стало мерилом качества продукта, вместо удобства пользователей?Я не думаю, что для пользователей (поддержка, администраторы и т.п.) конфигурация на JAVA удобней конфигурации XML. Не говоря уже об конфигурации распыленной в виде аннотаций по куче java файлов. Ok, если вы делаете конфигурацию на JAVA, она должна быть управляемой другой конфигурацией в каком то формате в удобной для пользователе виде. Вы уверены, что программисты это делают?

    @ushik70@ushik702 жыл бұрын
  • Увидев Кирилла, испугался, что опять будет парное выступление, к счастью, этого не произошло. Никого не хочу обидеть, но у Евгения лучше получается выступать соло.

    @karelalex@karelalex3 жыл бұрын
  • Patient это что?

    @dgvgfg@dgvgfg2 жыл бұрын
  • 01:00:30

    @UnitedFeodor@UnitedFeodor Жыл бұрын
  • @Bean public CustomPointcut() { return new CustomPointcut(); } // Same applies to Exception.... @Bean public DefaultPointcutAdvisor defaultPointcutAdvisor(final CustomPointcut customPointcut, final ExceptionHandlerAspect exceptionHandlerAspect ) { return new Default...(customPointcut, exceptionHandlerAspect ); } In this case, you do not call initialization methods, but instead use already created beans.

    @yankhonski9708@yankhonski97083 жыл бұрын
    • When you call configuration methods, you also get beans. Because configuration is wrapped with proxy (cglib proxy) and any call to method marked as @Bean returns bean instead.

      @funbiscuit@funbiscuit2 жыл бұрын
  • хмм а материальчик то бу....

    @alexmur07@alexmur073 жыл бұрын
  • InhectList не нарушает разве OCP?

    @TopToro@TopToro3 жыл бұрын
  • 2020 год, а звук нормально записать не можем

    @AndreiHorbach@AndreiHorbach3 жыл бұрын
  • Паттерны, принципы.....но по факту spring driven development никак не связанный с паттернами и принципами. Да стратегии, команды, но и те реализованые не по принципам SOLID. Я бы назвал доклад - как можно сделать кучу всего используя рефлексию и спринг. Подробный разбор в комментарии глупо писать, но я бы поспорил с 80% сказаного P.S Мне нравятся доклады Борисова, я люблю спринг, но конкретный доклад, на мой субьективный взгляд худший из его докладов. Автор начинает видить везде гвозди, имея спринг молоток.

    @pavelpetrashov2975@pavelpetrashov29753 жыл бұрын
  • Lajk!

    @MykolaPapenko@MykolaPapenko3 жыл бұрын
  • @Repository надо если модульный проект, и слой репозиториев лежит в отдельном модуле Возможно я что то не так делал, но без @Repository интерфейсы CrudRepository не работали. Поправьте если не прав

    @valery743@valery7433 жыл бұрын
  • Е.Борисов, xml умер 🤣 ну, ну

    @caffeinejavacode1475@caffeinejavacode14753 жыл бұрын
  • Всё здорово, но почему столько грамматических ошибок и опечаток в слайдах?

    @user-cy3yi3cw4f@user-cy3yi3cw4f3 жыл бұрын
    • Потому что делал как студент, в ночь перед экзаменом.

      @alex_chugaev@alex_chugaev3 жыл бұрын
  • Не забывайте про TypeCheck в field.set, так как туда можно засетить будет список с разными объектами и потом словить ClassCastException.

    @vyacheslavbabanin9282@vyacheslavbabanin92822 жыл бұрын
  • Мда, сингл респонсибилити, а потом вдруг лукап по имени филда...

    @bananasba@bananasba3 жыл бұрын
  • Женя, че похудел так? Корона и коронтин??

    @stasalesh9922@stasalesh99223 жыл бұрын
  • чёж тормозит чёж тормозит - оказалось зарядка не включена. Вроде большой уже, а не знает что ноутбуки медленней работают без питания

    @sinushkin@sinushkin3 жыл бұрын
  • Разбейте по блокам на ютубе. Пожалуйста.

    @TheEyeItself@TheEyeItself3 жыл бұрын
KZhead