Spring Framework. Урок 8: Жизненный цикл бина (Bean Lifecycle). Init, Destroy и Factory методы.

  Рет қаралды 137,811

alishev

alishev

Күн бұрын

Пікірлер: 194
@alishevN
@alishevN 5 жыл бұрын
ПОЛНЫЙ КУРС ПО SPRING: swiftbook.org/courses/438 Плейлист этого курса: kzbin.info/aero/PLAma_mKffTOR5o0WNHnY0mTjKxnCgSXrZ Telegram: t.me/alishev_g
@wetergshsghsfghsfh
@wetergshsghsfghsfh 4 жыл бұрын
Обнаружил интересный момент: первый prototype-бин, так же как и singleton, создается при старте контекста, даже если далее он ни где не используется. Наиль, подскажите пожалуйста, что с этим бином дальше происходит? Он просто остается в памяти до первого прохода GC (мое предположение, думаю так, в виду того, что сильных ссылок на него ни где нет) или существует все время работы контекста? Если существует, то можно ли от него избавиться как-то?
@chaosmike2418
@chaosmike2418 4 жыл бұрын
@@wetergshsghsfghsfh я канеш не Наиль =), но у меня бины ( prototype ) создаются только при созднании ( инициализации ) этого бина. Если не прав, поправте.
@genndy4538
@genndy4538 4 жыл бұрын
Spring почему-то может вызывать заприваченные конструкторы и создавать объекты. Причём без объявленного фабричного метода. С чем это может быть связано? upd: мы сами не можем вызвать данный конструктор с main, что и ожидается. Я, конечно, не эксперт по безопасности, но это дыра в безопасности, связанная с Spring. Нужно ли латать данную дыру?
@chaosmike2418
@chaosmike2418 4 жыл бұрын
через рефлексию можно вызывать и менять даже приватные поля/методы
@genndy4538
@genndy4538 4 жыл бұрын
@@chaosmike2418 совсем забыл про эту "замечательную" возможность.
@denisluke7191
@denisluke7191 4 жыл бұрын
Не могу не похвалить отлично поставленную речь, качество записи и шикарное произношение на английском. Я в диком восторге.
@alishevN
@alishevN 4 жыл бұрын
Спасибо!
@RuslanMurzin-uz8fj
@RuslanMurzin-uz8fj Жыл бұрын
Английский так себе. Но это дело наживное. Спасибо за курс !!!
@АлександрСоколовский-ч7к
@АлександрСоколовский-ч7к 2 жыл бұрын
Учусь уже на третьем курсе, на далеко не самой плохой специальности, но получаю больше полезного материала на бесплатном ютубе, чем в универе за немаленькие деньги. Спасибо за вашу деятельность уроки на 42 из 10)
@maudeblanche6723
@maudeblanche6723 4 жыл бұрын
Огромное спасибо за понятные и простые уроки. Такие видео стоит ждать столько, сколько требуется. Тем более, что автор делится знаниями на абсолютно добровольных началах и ничего никому не должен. Терпеливо мониторим обновления.
@cmygeHm327
@cmygeHm327 3 жыл бұрын
43 тысячи просмотров только одного видоса из всего курса! Это очень круто! Это реально нужно людям, люди смотрят, учатся. Очень круто! Спасибо огромнейшее!
@sergeigroshev
@sergeigroshev 3 жыл бұрын
Большое спасибо, Наиль! Твои видео и объяснения, лучшие и наверное единственные из русскоязычных с хорошо поставленной речью! Приятно слушать, смотреть и учиться.
@yuratsiunel9895
@yuratsiunel9895 5 жыл бұрын
Офигенные уроки, жаль выходят редко ((
@konstantinmatushenko5831
@konstantinmatushenko5831 5 жыл бұрын
Наиль, продолжай пожалуйста. Очень нужны твои уроки
@alex.zaslavskyi
@alex.zaslavskyi 4 жыл бұрын
Реально лучшие уроки, что я встретил по Спрингу, без воды, все по сути. Еще и небольшие самостоятельные задания есть :) Лучший!)
@Constructor11
@Constructor11 3 жыл бұрын
Наиль, превращаешь Спринг в приятную игрушку, доступную пониманию для всех и каждого ) Спасибо!
@Dermidont333
@Dermidont333 5 ай бұрын
Огромное спасибо за столь доходчивое и грамотное объяснение!
@ДенисГайвер-ю8р
@ДенисГайвер-ю8р 2 жыл бұрын
Благодарю Вас! Просто великолепно предоставляете материал. Слушать Вас - одно удовольствие! Вы очень большой молодец!!!!!!!!!!!!!!!!!!!!!!!!!
@Roman-kpax
@Roman-kpax 5 жыл бұрын
Спасибо тебе за то, что ты делаешь!
@ak_medvedev
@ak_medvedev 5 жыл бұрын
Как всегда на высшем уровне
@ВалерийМихайлов-ы9г
@ВалерийМихайлов-ы9г 5 жыл бұрын
Наиль пили есчо! Всё посмотрел) Очень годно! Молодец!
@KentAVP
@KentAVP 4 жыл бұрын
то чувство когда за час просмотренных лекций узнал столько же сколько на 300 страницах книги про спринг
@cannibalirk3055
@cannibalirk3055 3 жыл бұрын
Смотря какая книга. Но там иногда очень глубоко копают, что одновременно может являться как плюсом, так и минусом.
@Narryel
@Narryel 3 жыл бұрын
плохо читал значит)
@romanfp4611
@romanfp4611 5 жыл бұрын
Шикарные уроки, особенно перед собесом повторить))
@littleknight7876
@littleknight7876 4 жыл бұрын
устроился?
@JohnDoe-lc3tc
@JohnDoe-lc3tc 4 жыл бұрын
Как кайфово, что рефакторинг гуру продвигается в массы!
@vitaliimaistrenko5218
@vitaliimaistrenko5218 5 жыл бұрын
Благодарю, всё очень доходчиво
@Andrzej3935
@Andrzej3935 3 жыл бұрын
Лучшие уроки из всех что встречал, продолжайте!
@АлександрСоколовский-ч7к
@АлександрСоколовский-ч7к 2 жыл бұрын
Очень нужен курс по Hibernate от вас, а то после вашего подхода индусов вообще невозможно воспринимать в качестве лектора. С огромным удовольствием стану спонсором, как только найду способ, так как все карты не подходят.
@Сергей-н7с6у
@Сергей-н7с6у 5 жыл бұрын
Наконец-то, спасибо за урок!
@omar_akkulov
@omar_akkulov 3 жыл бұрын
Огромное тебе спасибо, Наиль, за такие прекрасные уроки)
@FightingFalcao
@FightingFalcao 4 жыл бұрын
Паттерн проектирования "Фабричный метод" заключается в делегировании создания объектов с которыми работает класс классам-потомкам. Для этого создается абстрактный метод напр. getInstance() который возвращает нужный объект, а его конкретная реализация определяется в классах-потомках. + Даже если сделать конструктор приватным, у спринга все равно получится создать объект даже без фабричного метода, предположу, что из за использования механизма рефлексии доступ к приватному конструктору все равно есть.
@TrololoWoT
@TrololoWoT 5 жыл бұрын
классные уроки. как человек не разбирающийся ещё в spring ожидал здесь же увидеть порядок destroy от зависимостей(если они вообще есть) и как передавать параметры в фабричный метод(опять же если есть). пойду погуглю.
@ЕвгенийОмельченко-ы6щ
@ЕвгенийОмельченко-ы6щ 3 жыл бұрын
Спасибо. Продолжайте!
@ak_medvedev
@ak_medvedev 5 жыл бұрын
Когда следующий планируется?)
@Krasnolesye
@Krasnolesye 2 жыл бұрын
Молодца. Умеет объяснять!
@cannibalirk3055
@cannibalirk3055 3 жыл бұрын
Всё понятно и доступно, но хочется более сложного примера)) с реальным применением.
@OREH88
@OREH88 5 жыл бұрын
Спасибо за сайт с Паттернами!!!
@ТимурОлевский
@ТимурОлевский 3 жыл бұрын
Момент про то, что singleton с фабричным методом остаётся singleton, был для меня новым. Спасибо
@ОлександрРадовець-ы6т
@ОлександрРадовець-ы6т 3 жыл бұрын
без води ... гениально... Огромное спасибо>>>
@nickolaykozachenko671
@nickolaykozachenko671 4 жыл бұрын
Спасибо, отличные уроки
@shapirovet
@shapirovet 4 жыл бұрын
Наиль, отличные уроки! Спасибо!
@andrii.kukuruza
@andrii.kukuruza 5 жыл бұрын
Супер! Жду продолжение!
@ГайратМадумаров-ю2я
@ГайратМадумаров-ю2я 3 жыл бұрын
Спасибо за ваши уроки. Без сомнения это лучшее что я видел. Маленькое замечание по фабричному методу, возможно его стоило поместить в MusicPlayer ведь не очевидно как бы тогда описывался этот метод в контексте.
@КонстантинМатвеев-ж6ц
@КонстантинМатвеев-ж6ц 5 жыл бұрын
Урааа!! Спасибо огромное!!!
@ВладиславШестернин-б9с
@ВладиславШестернин-б9с 5 жыл бұрын
Ураааааа!!!!) Новое видео!!!) Спасибо)))
@christinabredis8877
@christinabredis8877 5 жыл бұрын
Spasibo!
@Alexander_Kaidalov
@Alexander_Kaidalov 2 жыл бұрын
Очень достойные уроки. Наиль, спасибо! Вот что значит есть способности к преподаванию.
@МихаилКатков-м8х
@МихаилКатков-м8х 5 жыл бұрын
Наконец то 🤟🏻🤟🏻🤟🏻🤟🏻🤟🏻🤟🏻
@klasterdev154
@klasterdev154 5 жыл бұрын
ждём новые видео)
@nedonegr
@nedonegr 4 жыл бұрын
Очень здорово, получается, синглтон создаётся сразу в контексте, а прототайп только в случае вызова метода гетБин(). Если же не закрывать контекст, все синглтон бины остануться висеть в памяти, вот одна из причин, почему вааажно закрывать контекст. Спасибо, супер наглядно получается с методами инит() и дистрой().
@AnnaIsHere
@AnnaIsHere 4 жыл бұрын
Видео закончилось на самом интересном))
@alishevN
@alishevN 4 жыл бұрын
Скоро будет продолжение))
@ktyz1992
@ktyz1992 4 жыл бұрын
Подскажите пожалуйста, зачем при вызове метода context.getBean мы кроме названия (id) бина вводим ещё второй параметр ClassicalMusic.class. Казалось бы зачем, мы же в XML-ке уже указали ссылку на него в свойстве class="x.x.x.ClassicalMusic". Зачем нужно указываться ещё раз?
@wasd__0
@wasd__0 Жыл бұрын
кстати, в spring по-умолчанию используется eager-инициализация для скоупа sinlgeton и lazy-инициализация для скоупа prototype... если вам нужно поменять тип инициализации, то при объявлении бина нужно добавить тег lazy-init замечание: у prototype скоупа всегда будет lazy-инициализаци (что логично)
@alexander_brun
@alexander_brun 3 жыл бұрын
Spring умный, даже не прописывая factory-method в XML - сам догадывается как нужно работать.
@olegpicik363
@olegpicik363 4 жыл бұрын
Почему то сделал конструктор приватным, фактори метод еще не делал, решил проверить, спринг создал объект нормально. Ему видимо все равно на модификатор конструктора)
@markg2303
@markg2303 3 жыл бұрын
за год ничего не поменялось)
@Libra7by
@Libra7by 3 жыл бұрын
@@markg2303 Если не ошибаюсь, то фабричный метод нужен не Спрингу, а самому приложению для реализации специальной логики. Для приложения конструктор будет закрыт, как положено, и фабричный метод будет работать.
@vladimirblagin3105
@vladimirblagin3105 4 жыл бұрын
8:05 не очень четко объясняется жизненный цикл бина в этом месте. Если бин описан в scope Singleton, то он будет создан и инициирован до вызова метода getBean, если же бин описан в scope Prototype, то создание и инициализация бина будет при вызове метода getBean, что естественно. 16:24 Spring не обращает внимания на приватность конструктора и спокойно умеет создавать объекты через new даже на приватном конструкторе (так же как и приватность методов init и destroy не имеет значения для Spring)
@математикАртем
@математикАртем 4 жыл бұрын
то есть Prototype и есть lazy init..
@ilyababcenco6864
@ilyababcenco6864 4 жыл бұрын
Немного не понял с factory method, если я не указываю этот параметр в applicationContext и конструктор приватный, у меня полюбому объект класса ClassicalMusic создавался.
@alexanders1068
@alexanders1068 2 жыл бұрын
Я попробовал factory-method на двух bean в singleton и prototype scope. Для проверки вставил в фабричный метод (getClassicalMusic) вывод на экран "println("factory-method used")" перед "return new ClassicalMusic()". Оказалось, что метод getClassicalMusic() вызывается, как при создании объекта в singleton scope, так и при prototype scope. Но при prototype scope каждый объект с разным hash code. Получается автор под конец неправильно сказал про factory-method в prototype scope?
@МАКСИМКОТОВ-о2ч
@МАКСИМКОТОВ-о2ч 5 жыл бұрын
We love you!
@xackuuu
@xackuuu 4 жыл бұрын
Добрый вечер) Спасибо за ваши курсы) Очень поучительные) Хотел спросить почему у вас подсказки выходят на хмл. Тоесть если есть метод и вы пишите factory method он подсказывает какой метод нужен 16:50 , но у меня такого нет в idea( Как быть) Заранее спасибо)
@ama_zoomer
@ama_zoomer 2 жыл бұрын
Вопрос, а почему у меня Spring-у получилось создать объект, когда я прописал factory-method, но не указал ему, что надо использовать factory-method? Он ищет подходящий метод автоматически?
@ama_zoomer
@ama_zoomer 2 жыл бұрын
А, я нашел, почему. Spring настолько крутой, что он может с помощью reflections (не знаю, как правильней будет на русский перевести) делать конструктор доступным.
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
Подскажите, что нужно внедрять через @Bean, а что создавать явно через new? Чем руководствоваться при принятии решения?
@seoonlyRU
@seoonlyRU 2 жыл бұрын
Лайк неглядя от СЕООНЛИ
@НатальяШевченко-м6н
@НатальяШевченко-м6н 2 жыл бұрын
Добрый день подскажите пожалуйста, если создать бины других классов метод init и destroy, которые определены только в Classicmusic, все равно выводятся в консоль?
@ilavio777
@ilavio777 4 жыл бұрын
Что то init метод прошёл а вот destroi нет, в конце метода main есть запуск context.close; ? Eclipse среда если что.
@ms_shifu7047
@ms_shifu7047 5 жыл бұрын
мы уже скучаем по @ннот@циям
@himamahmudov8122
@himamahmudov8122 5 жыл бұрын
При использовании factory method имеется ввиду фабричный паттерн как я понял. Но с другой стороны если метод создания объектов статический то мы не сможем переопределить этот метод и тогда отпадает смысл самого фабричного паттерна. Нам придетсся для каждого класса создавать свой create метод и спрашивается зачем нам тогда фабричный паттерн? Можете объяснить, пожалуйста
@cmygeHm327
@cmygeHm327 4 жыл бұрын
Дестрой бинов происходит в результате context.close()?
@Narryel
@Narryel 5 жыл бұрын
Урааа, видосик
@aleksandrivashinin
@aleksandrivashinin Жыл бұрын
При запуске приложения: 1. Срабатывает весь код, написанный до чтения из контекста. 2. При чтении из контекста начинают создаваться бины, сначала срабатывает конструктор бина, затем инит метод, затем следующий бин и т.д. 3. Когда мы закрываем контекст, срабатывает дестрой метод. 4. Потом весь код после закрытия контекста. 5. Программа завершает работу.
@stanislavshilo6022
@stanislavshilo6022 3 жыл бұрын
Что важно, даже если я создам приватный конструктор ClassicalMusic, я не смогу создать объект словом new, но Spring может создать этот объект
@gmaster100500
@gmaster100500 3 жыл бұрын
Потому что Spring использует Reflection API и джавовские конструкторы он не использует вообще.
@mopo3ujibhuk
@mopo3ujibhuk 3 жыл бұрын
Это вообще круто.
@ЕвгенийКрупин-м2з
@ЕвгенийКрупин-м2з 3 жыл бұрын
@@gmaster100500 Это вряд ли. Конструктор не только присваивает значения, но и может производить другие операции. Если их не использовать, это значит отбросить логику создания объекта заданную разработчиком.
@ПавелСергеевич-п8ж
@ПавелСергеевич-п8ж 5 жыл бұрын
Хмм, у меня при scope="prototype" и 3 вызовах context.getBean инициализация выполняется 4 раза, при двух вызовах context.getBean 3 раза, при одном вызове context.getBean 2 раза. А в видео говорится, что число инициализаций соответствует числу вызовов метода. Это я что-то делаю не так, или ошибка в видео?
@alishevN
@alishevN 5 жыл бұрын
Посмотрите, может где-то создается еще один объект (например он внедряется в тот объект, который вы получаете с помощью context.getBean()).
@ПавелСергеевич-п8ж
@ПавелСергеевич-п8ж 5 жыл бұрын
@@alishevN Да, спасибо разобрался. У меня в бине musicPayer лежал контейнер со списком ссылок на другие бины, и когда закомментил в нем ссылку на этот бин стала выполняться только одна инициализация. Я думал что бин не инициализируется пока не вызываем context.getBean, но в случае со списком видимо идет инициализация в момент new ClassPathXmlApplicationContext
@mkrugl
@mkrugl 4 жыл бұрын
Этот бы вопрос в топ, а то столько людей не понимало что происходит. (В том числе и я 😄).
@Роман-й7к1з
@Роман-й7к1з 4 жыл бұрын
Заметил кое-что интересное: если мы получаем prototype бин, то init-method вызывается, если не получаем и не создаем зависимость от него, то init-method не вызывается
@RenatF
@RenatF 4 жыл бұрын
Хорошо, что достаточно текста в презентациях. У кого нет слуха, думаю, лучше смогут лучше понять материал
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
Спасибо
@АлександрМакаров-ъ9ъ8б
@АлександрМакаров-ъ9ъ8б 4 жыл бұрын
Сделал приватный конструктор и Spring все равно успешно инициализирует бин через Reflection API
@alishevN
@alishevN 4 жыл бұрын
Да, о рефлексии у меня есть уроки здесь: www.udemy.com/course/javarussia/?referralCode=A36A8387475CAFDC6776
@chokkitv379
@chokkitv379 2 жыл бұрын
круто!
@vladklichko556
@vladklichko556 Жыл бұрын
чем отличается создания объекта через init и через factory-method?
@GoPetr
@GoPetr 5 жыл бұрын
Ураа
@HNKN4
@HNKN4 Жыл бұрын
Если Spring вызывает указанные init/destroy methods, но мы можем их не указывать явно. Значит ли, что у таких методов есть дефолтное значение?
@gevorgmkrtchyan7939
@gevorgmkrtchyan7939 4 жыл бұрын
Does garbage collector delete the object after calling the ''destroy'' method?
@HNKN4
@HNKN4 Жыл бұрын
Получается Spring вызывает init method два раза? При создании объекта и после внедрения зависимости?
@OHOTOJIE1
@OHOTOJIE1 3 жыл бұрын
Мало-ли кто-нибудь такой же лопух как я. Если у вас в singletone бине запускается только Init метод а destroy не работает, скорее всего вы закоментили или удалили метод context.close() Два часа мучался пока не сообразил.
@Виктор-э1ы6с
@Виктор-э1ы6с 5 жыл бұрын
Уже несколько уроков не дает покоя вопрос. При создании экземпляра класса (например MusicPlayer) мы дважды ссылаемся на сам класс: сначала в xml application context (class="ru.alishev.springcourse.MusicPlayer"), а затем в самом джава-коде, при создании бина (MusicPlayer.class). К чему это дублирование? Почему в джава-коде нужно снова явно указывать класс если мы его уже указали в xml application context? Это очень странно
@ГорбуновЕвгений-з2н
@ГорбуновЕвгений-з2н 5 жыл бұрын
когда мы вызываем getBean("name") в коде, мы до этапа выполнения, ничего не знаем о applicationContext.xml и какие бины -> каким классам соответствуют. А с объектом нам нужно дальше работать в коде, следовательно его необходимо привести к нужному нам типу, например к общему интерфейсу или предку и использовать далее (в нашем случае просто к нашему классу). А вызов getBean("name", "class") - просто перегруженный метод, чтобы не приводить тип вручную.
@manOfPlanetEarth
@manOfPlanetEarth 4 жыл бұрын
Горбунов Евгений 🤦‍♂️🤦‍♂️🤦‍♂️👊🏼 клоун, как это мы ничего не знаем об applicationContext.xml, если мы на ЭТОМ же контексте и вызываем getBean(id)!!!!!🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️
@Lorienl2master
@Lorienl2master 3 жыл бұрын
так их не будет уничтожать сборщик мусора из ява кор?
@ВиталийТимонин-и6д
@ВиталийТимонин-и6д 3 жыл бұрын
Так получается нет никакого смысла создавать фабрику на синглтоне? Она ведь как раз и предназначена для создания множества объектов? То есть надо использовать scope прототип? Или нет? Какой смысл в фабрике тогда? Или это способ адаптации фабрики в уже используемом классе под спринг? Объясни плиз поподробней.
@Libra7by
@Libra7by 3 жыл бұрын
Правильно ли я понимаю, что Спринг - это большой сложный многофункциональный патерн "Абстрактная фабрика" (и не только)? До ваших курсов немного почитал книгу "Head First. Паттерны проектирования" - и прям ловлю вьетнамские флешбеки.
@iljushka7198
@iljushka7198 5 жыл бұрын
Spring Boot Rest будет через два года? :D
@dmitrylubyanov7277
@dmitrylubyanov7277 4 жыл бұрын
Немного не понял, но у меня почему-то создается экземпляр класса с приватным конструктором. При том что фабричный метод даже не создавал.
@alishevN
@alishevN 4 жыл бұрын
Это благодаря рефлексии.
@manOfPlanetEarth
@manOfPlanetEarth 4 жыл бұрын
напиши сюда этот код
@zaordu4427
@zaordu4427 2 жыл бұрын
Чем init-method принципиально лучше конструктора/инциализатора класса? добавил в класс с музыкой, он вызывается даже раньше init'a (вне зависимости от scope). з.ы. ролики просто шикарные, огромное спасибо за труд автору
@komdiv4906
@komdiv4906 Жыл бұрын
Если внедряются зависимости в поля то init-metod будет уже знать о них, а конструктор еще нет.
@RuslanMurzin-uz8fj
@RuslanMurzin-uz8fj Жыл бұрын
Начиная с Java 11 чтобы javax.annotation.PostConstruct и PreDestroy появились нужно добавить зависимость javax.annotation-api
@sokprorok6037
@sokprorok6037 10 ай бұрын
Сделал все, как в уроке, но дестрой-метод не отработал (сообщение не вывелось, будто его и нет). А инит-метод отработал. В чём может быть дело? Scope поставил "singleton".
@сайфумалик
@сайфумалик Ай бұрын
надо закрыть контекст и тогда появится
@АлексейБуторин-в1т
@АлексейБуторин-в1т 2 жыл бұрын
Материал подается очень доступно и понятно. Хочу продолжить изучение (купить курс на udemy). Как оплатить курс рублями в РФ (не используя биткоины) ? Спасибо.
@alishevN
@alishevN 2 жыл бұрын
Здравствуйте, Алексей! Курс доступен в РФ вот здесь: swiftbook.org/courses/438
@slavkinsmoke38
@slavkinsmoke38 2 жыл бұрын
Я думаю стоило рассказать про destroy-method подробнее, потому что если выскочит исключение, то destroy-method не сработает и как этого избежать
@mahmoody8913
@mahmoody8913 Жыл бұрын
Refactoring guru уже не торт =((
@b.s.3105
@b.s.3105 4 жыл бұрын
привет Нил, я вот напоролся на один факт на 8:32 минуте ты обесняеш когда вызывается эти 2 метода только вот я удалил полностю создание обьектов в методе Main и оставил создание обьекта ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); и закрытие его так вот эти методы вызвались ...... как я понимаю не зависит от того создаёш ты бины или нет в Main-e это работает на подобие Статик Блока в Классе
@МихаилКатков-м8х
@МихаилКатков-м8х 5 жыл бұрын
В плане init метода - пишут что его желательно явно указывать в случае когда используется инъекция через setter.Инфа со стака так что полной гарантии в правдивости не даю)))
@arthurshishko1841
@arthurshishko1841 4 жыл бұрын
Почему если поставить scope как prototype, то init метод вызывается два раза?
@eraeletay8020
@eraeletay8020 3 жыл бұрын
потому что создается 2 объекта (бина), и срабатывает инит метод каждого из них
@ЯрославКозыревич-е5ф
@ЯрославКозыревич-е5ф 3 жыл бұрын
Потому, что у нас есть ещё bean musicPlayer, который зависит от бина, который вызывает метод init, но у musicPlayer scope = singleton, и зависимость должна внедриться ещё до метода musicPlayer.getBean(), а именно при вызове метода classPathXmlApplicationContext(), соотвественно создаётся объект первый раз при вызове classPathXmlApplicationContext для musicPlayer, а после этого создаётся объект при вызове метода getBean для класса в котором есть наш метод init
@4gkage
@4gkage 3 жыл бұрын
Еще стоит упомянуть что инит метод не может выбрасывать проверяемые исключения
@arcadyivanov
@arcadyivanov 3 жыл бұрын
В уроке 8 для фабричного метода подойдёт модификатор private. Spring-у метод будет доступен. А вот юзер уже никак не создаст объект мимо Spring-а.
@Slashh
@Slashh 2 жыл бұрын
Наш лектор в университете дал ссылку на твои видео :) Зачем им платят, не понимаю?
@torezracerful
@torezracerful 2 жыл бұрын
Я конечно не спец, но не корректнее ли называть "паттерн проектирования", ведь строится архитектура приложения?
@ayrat11
@ayrat11 3 жыл бұрын
Почему с приватным конструктором единственный способ создать объект это паблик статик фабричный метод? А как же рефлексия?
@АртемПервенецкас-ш7я
@АртемПервенецкас-ш7я 5 жыл бұрын
Круто! Очень хорошие уроки) В конце можно было проще немного сказать, что factory-method не влияет на scope)
@thealekss2006
@thealekss2006 3 жыл бұрын
Не пойму один момент. Если программисты такие ленивые, все пытаются упростить, то почему при getBean вместе с указанием ID нашего бина нужно указать класс? Насколько я понял ID - уникальный идентификатор бина. Почему этой информации недостаточно?
@andriiostashevskyi3465
@andriiostashevskyi3465 4 жыл бұрын
@PostConstruct аноташка сечяс актуальна.. так как от xml стараются отказиватся
@Light-qo9vo
@Light-qo9vo 5 жыл бұрын
Уроки супер, на практике очень быстро всё воспринимается!! Интересно почему прописуешь бины через xml? И планируешь ли в будущем уроки с аннотациями?
@alishevN
@alishevN 5 жыл бұрын
На следующем уроке уже будут аннотации
PIZZA or CHICKEN // Left or Right Challenge
00:18
Hungry FAM
Рет қаралды 16 МЛН
Из какого города смотришь? 😃
00:34
МЯТНАЯ ФАНТА
Рет қаралды 1,9 МЛН
Twin Telepathy Challenge!
00:23
Stokes Twins
Рет қаралды 50 МЛН
Trick-or-Treating in a Rush. Part 2
00:37
Daniel LaBelle
Рет қаралды 45 МЛН
Что такое API?
6:05
Merion Academy
Рет қаралды 358 М.
Евгений Борисов - Spring - Глубоко и не очень
1:03:57
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 161 М.
ЭТОТ Паттерн Спрашивают на 99% Собесов
14:19
JAVA DTO Pattern Tutorial | Simplify Your Code
19:12
Amigoscode
Рет қаралды 212 М.
Spring Framework. Жизненный цикл
19:10
PavelVil
Рет қаралды 7 М.
PIZZA or CHICKEN // Left or Right Challenge
00:18
Hungry FAM
Рет қаралды 16 МЛН