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

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ธ.ค. 2024

ความคิดเห็น • 194

  • @alishevN
    @alishevN  5 ปีที่แล้ว +23

    ПОЛНЫЙ КУРС ПО SPRING: swiftbook.org/courses/438
    Плейлист этого курса: th-cam.com/play/PLAma_mKffTOR5o0WNHnY0mTjKxnCgSXrZ.html
    Telegram: t.me/alishev_g

    • @wetergshsghsfghsfh
      @wetergshsghsfghsfh 4 ปีที่แล้ว

      Обнаружил интересный момент: первый prototype-бин, так же как и singleton, создается при старте контекста, даже если далее он ни где не используется. Наиль, подскажите пожалуйста, что с этим бином дальше происходит? Он просто остается в памяти до первого прохода GC (мое предположение, думаю так, в виду того, что сильных ссылок на него ни где нет) или существует все время работы контекста? Если существует, то можно ли от него избавиться как-то?

    • @chaosmike2418
      @chaosmike2418 4 ปีที่แล้ว

      @@wetergshsghsfghsfh я канеш не Наиль =), но у меня бины ( prototype ) создаются только при созднании ( инициализации ) этого бина. Если не прав, поправте.

    • @genndy4538
      @genndy4538 4 ปีที่แล้ว +1

      Spring почему-то может вызывать заприваченные конструкторы и создавать объекты. Причём без объявленного фабричного метода. С чем это может быть связано?
      upd: мы сами не можем вызвать данный конструктор с main, что и ожидается. Я, конечно, не эксперт по безопасности, но это дыра в безопасности, связанная с Spring. Нужно ли латать данную дыру?

    • @chaosmike2418
      @chaosmike2418 4 ปีที่แล้ว

      через рефлексию можно вызывать и менять даже приватные поля/методы

    • @genndy4538
      @genndy4538 4 ปีที่แล้ว +1

      @@chaosmike2418 совсем забыл про эту "замечательную" возможность.

  • @denisluke7191
    @denisluke7191 4 ปีที่แล้ว +78

    Не могу не похвалить отлично поставленную речь, качество записи и шикарное произношение на английском. Я в диком восторге.

    • @alishevN
      @alishevN  4 ปีที่แล้ว +3

      Спасибо!

    • @RuslanMurzin-uz8fj
      @RuslanMurzin-uz8fj ปีที่แล้ว

      Английский так себе. Но это дело наживное. Спасибо за курс !!!

  • @АлександрСоколовский-ч7к
    @АлександрСоколовский-ч7к 2 ปีที่แล้ว +20

    Учусь уже на третьем курсе, на далеко не самой плохой специальности, но получаю больше полезного материала на бесплатном ютубе, чем в универе за немаленькие деньги. Спасибо за вашу деятельность уроки на 42 из 10)

  • @cmygeHm327
    @cmygeHm327 3 ปีที่แล้ว +8

    43 тысячи просмотров только одного видоса из всего курса! Это очень круто! Это реально нужно людям, люди смотрят, учатся. Очень круто! Спасибо огромнейшее!

  • @sergeigroshev
    @sergeigroshev 3 ปีที่แล้ว +8

    Большое спасибо, Наиль! Твои видео и объяснения, лучшие и наверное единственные из русскоязычных с хорошо поставленной речью! Приятно слушать, смотреть и учиться.

  • @yuratsiunel9895
    @yuratsiunel9895 5 ปีที่แล้ว +75

    Офигенные уроки, жаль выходят редко ((

  • @maudeblanche6723
    @maudeblanche6723 5 ปีที่แล้ว +5

    Огромное спасибо за понятные и простые уроки. Такие видео стоит ждать столько, сколько требуется. Тем более, что автор делится знаниями на абсолютно добровольных началах и ничего никому не должен. Терпеливо мониторим обновления.

  • @Constructor11
    @Constructor11 3 ปีที่แล้ว +5

    Наиль, превращаешь Спринг в приятную игрушку, доступную пониманию для всех и каждого ) Спасибо!

  • @alex.zaslavskyi
    @alex.zaslavskyi 4 ปีที่แล้ว +4

    Реально лучшие уроки, что я встретил по Спрингу, без воды, все по сути. Еще и небольшие самостоятельные задания есть :)
    Лучший!)

  • @konstantinmatushenko5831
    @konstantinmatushenko5831 5 ปีที่แล้ว +27

    Наиль, продолжай пожалуйста. Очень нужны твои уроки

  • @ДенисГайвер-ю8р
    @ДенисГайвер-ю8р 2 ปีที่แล้ว +1

    Благодарю Вас! Просто великолепно предоставляете материал. Слушать Вас - одно удовольствие! Вы очень большой молодец!!!!!!!!!!!!!!!!!!!!!!!!!

  • @FightingFalcao
    @FightingFalcao 4 ปีที่แล้ว +5

    Паттерн проектирования "Фабричный метод" заключается в делегировании создания объектов с которыми работает класс классам-потомкам. Для этого создается абстрактный метод напр. getInstance() который возвращает нужный объект, а его конкретная реализация определяется в классах-потомках.
    + Даже если сделать конструктор приватным, у спринга все равно получится создать объект даже без фабричного метода, предположу, что из за использования механизма рефлексии доступ к приватному конструктору все равно есть.

  • @Dermidont333
    @Dermidont333 6 หลายเดือนก่อน

    Огромное спасибо за столь доходчивое и грамотное объяснение!

  • @ak_medvedev
    @ak_medvedev 5 ปีที่แล้ว +9

    Как всегда на высшем уровне

  • @Roman-kpax
    @Roman-kpax 5 ปีที่แล้ว +11

    Спасибо тебе за то, что ты делаешь!

  • @romanfp4611
    @romanfp4611 5 ปีที่แล้ว +9

    Шикарные уроки, особенно перед собесом повторить))

  • @JohnDoe-lc3tc
    @JohnDoe-lc3tc 4 ปีที่แล้ว +1

    Как кайфово, что рефакторинг гуру продвигается в массы!

  • @ВалерийМихайлов-ы9г
    @ВалерийМихайлов-ы9г 5 ปีที่แล้ว +11

    Наиль пили есчо! Всё посмотрел) Очень годно! Молодец!

  • @KentAVP
    @KentAVP 4 ปีที่แล้ว +8

    то чувство когда за час просмотренных лекций узнал столько же сколько на 300 страницах книги про спринг

    • @cannibalirk3055
      @cannibalirk3055 3 ปีที่แล้ว

      Смотря какая книга. Но там иногда очень глубоко копают, что одновременно может являться как плюсом, так и минусом.

    • @Narryel
      @Narryel 3 ปีที่แล้ว +1

      плохо читал значит)

  • @АлександрСоколовский-ч7к
    @АлександрСоколовский-ч7к 2 ปีที่แล้ว

    Очень нужен курс по Hibernate от вас, а то после вашего подхода индусов вообще невозможно воспринимать в качестве лектора. С огромным удовольствием стану спонсором, как только найду способ, так как все карты не подходят.

  • @Сергей-н7с6у
    @Сергей-н7с6у 5 ปีที่แล้ว +6

    Наконец-то, спасибо за урок!

  • @vitaliimaistrenko5218
    @vitaliimaistrenko5218 5 ปีที่แล้ว +6

    Благодарю, всё очень доходчиво

  • @Andrzej3935
    @Andrzej3935 3 ปีที่แล้ว

    Лучшие уроки из всех что встречал, продолжайте!

  • @ОлександрРадовець-ы6т
    @ОлександрРадовець-ы6т 3 ปีที่แล้ว +1

    без води ... гениально... Огромное спасибо>>>

  • @omar_akkulov
    @omar_akkulov 4 ปีที่แล้ว +1

    Огромное тебе спасибо, Наиль, за такие прекрасные уроки)

  • @ВладиславШестернин-б9с
    @ВладиславШестернин-б9с 5 ปีที่แล้ว +5

    Ураааааа!!!!)
    Новое видео!!!)
    Спасибо)))

  • @cannibalirk3055
    @cannibalirk3055 3 ปีที่แล้ว +2

    Всё понятно и доступно, но хочется более сложного примера)) с реальным применением.

  • @OREH88
    @OREH88 5 ปีที่แล้ว +3

    Спасибо за сайт с Паттернами!!!

  • @andrii.kukuruza
    @andrii.kukuruza 5 ปีที่แล้ว +4

    Супер! Жду продолжение!

  • @Krasnolesye
    @Krasnolesye 2 ปีที่แล้ว

    Молодца. Умеет объяснять!

  • @christinabredis8877
    @christinabredis8877 5 ปีที่แล้ว +5

    Spasibo!

  • @ТимурОлевский
    @ТимурОлевский 3 ปีที่แล้ว +2

    Момент про то, что singleton с фабричным методом остаётся singleton, был для меня новым. Спасибо

  • @КонстантинМатвеев-ж6ц
    @КонстантинМатвеев-ж6ц 5 ปีที่แล้ว +5

    Урааа!! Спасибо огромное!!!

  • @TrololoWoT
    @TrololoWoT 5 ปีที่แล้ว

    классные уроки. как человек не разбирающийся ещё в spring ожидал здесь же увидеть порядок destroy от зависимостей(если они вообще есть) и как передавать параметры в фабричный метод(опять же если есть). пойду погуглю.

  • @ЕвгенийОмельченко-ы6щ
    @ЕвгенийОмельченко-ы6щ 4 ปีที่แล้ว +1

    Спасибо. Продолжайте!

  • @nedonegr
    @nedonegr 4 ปีที่แล้ว +1

    Очень здорово, получается, синглтон создаётся сразу в контексте, а прототайп только в случае вызова метода гетБин().
    Если же не закрывать контекст, все синглтон бины остануться висеть в памяти, вот одна из причин, почему вааажно закрывать контекст.
    Спасибо, супер наглядно получается с методами инит() и дистрой().

  • @wasd__0
    @wasd__0 ปีที่แล้ว +1

    кстати, в spring по-умолчанию используется eager-инициализация для скоупа sinlgeton и lazy-инициализация для скоупа prototype... если вам нужно поменять тип инициализации, то при объявлении бина нужно добавить тег lazy-init
    замечание: у prototype скоупа всегда будет lazy-инициализаци (что логично)

  • @ak_medvedev
    @ak_medvedev 5 ปีที่แล้ว +25

    Когда следующий планируется?)

  • @nickolaykozachenko671
    @nickolaykozachenko671 4 ปีที่แล้ว +1

    Спасибо, отличные уроки

  • @shapirovet
    @shapirovet 4 ปีที่แล้ว

    Наиль, отличные уроки! Спасибо!

  • @ГайратМадумаров-ю2я
    @ГайратМадумаров-ю2я 3 ปีที่แล้ว

    Спасибо за ваши уроки. Без сомнения это лучшее что я видел. Маленькое замечание по фабричному методу, возможно его стоило поместить в MusicPlayer ведь не очевидно как бы тогда описывался этот метод в контексте.

  • @МАКСИМКОТОВ-о2ч
    @МАКСИМКОТОВ-о2ч 5 ปีที่แล้ว +2

    We love you!

  • @МихаилКатков-м8х
    @МихаилКатков-м8х 5 ปีที่แล้ว +8

    Наконец то 🤟🏻🤟🏻🤟🏻🤟🏻🤟🏻🤟🏻

  • @AnnaIsHere
    @AnnaIsHere 4 ปีที่แล้ว

    Видео закончилось на самом интересном))

    • @alishevN
      @alishevN  4 ปีที่แล้ว

      Скоро будет продолжение))

  • @klasterdev154
    @klasterdev154 5 ปีที่แล้ว +5

    ждём новые видео)

  • @olegpicik363
    @olegpicik363 5 ปีที่แล้ว +7

    Почему то сделал конструктор приватным, фактори метод еще не делал, решил проверить, спринг создал объект нормально. Ему видимо все равно на модификатор конструктора)

    • @markg2303
      @markg2303 3 ปีที่แล้ว +2

      за год ничего не поменялось)

    • @Libra7by
      @Libra7by 3 ปีที่แล้ว

      @@markg2303 Если не ошибаюсь, то фабричный метод нужен не Спрингу, а самому приложению для реализации специальной логики. Для приложения конструктор будет закрыт, как положено, и фабричный метод будет работать.

  • @vladimirblagin3105
    @vladimirblagin3105 4 ปีที่แล้ว +8

    8:05 не очень четко объясняется жизненный цикл бина в этом месте. Если бин описан в scope Singleton, то он будет создан и инициирован до вызова метода getBean, если же бин описан в scope Prototype, то создание и инициализация бина будет при вызове метода getBean, что естественно.
    16:24 Spring не обращает внимания на приватность конструктора и спокойно умеет создавать объекты через new даже на приватном конструкторе (так же как и приватность методов init и destroy не имеет значения для Spring)

  • @seoonlyRU
    @seoonlyRU 2 ปีที่แล้ว +1

    Лайк неглядя от СЕООНЛИ

  • @xackuuu
    @xackuuu 4 ปีที่แล้ว +4

    Добрый вечер) Спасибо за ваши курсы) Очень поучительные)
    Хотел спросить почему у вас подсказки выходят на хмл. Тоесть если есть метод и вы пишите factory method он подсказывает какой метод нужен 16:50 , но у меня такого нет в idea( Как быть) Заранее спасибо)

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 2 ปีที่แล้ว +1

    Подскажите, что нужно внедрять через @Bean, а что создавать явно через new?
    Чем руководствоваться при принятии решения?

  • @Narryel
    @Narryel 5 ปีที่แล้ว +3

    Урааа, видосик

  • @alexander_brun
    @alexander_brun 3 ปีที่แล้ว +4

    Spring умный, даже не прописывая factory-method в XML - сам догадывается как нужно работать.

  • @Alexander_Kaidalov
    @Alexander_Kaidalov 3 ปีที่แล้ว

    Очень достойные уроки. Наиль, спасибо! Вот что значит есть способности к преподаванию.

  • @aleksandrivashinin
    @aleksandrivashinin ปีที่แล้ว +1

    При запуске приложения: 1. Срабатывает весь код, написанный до чтения из контекста. 2. При чтении из контекста начинают создаваться бины, сначала срабатывает конструктор бина, затем инит метод, затем следующий бин и т.д. 3. Когда мы закрываем контекст, срабатывает дестрой метод. 4. Потом весь код после закрытия контекста. 5. Программа завершает работу.

  • @ktyz1992
    @ktyz1992 4 ปีที่แล้ว +2

    Подскажите пожалуйста, зачем при вызове метода context.getBean мы кроме названия (id) бина вводим ещё второй параметр ClassicalMusic.class. Казалось бы зачем, мы же в XML-ке уже указали ссылку на него в свойстве class="x.x.x.ClassicalMusic". Зачем нужно указываться ещё раз?

  • @cmygeHm327
    @cmygeHm327 4 ปีที่แล้ว +2

    Дестрой бинов происходит в результате context.close()?

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 2 ปีที่แล้ว

    Спасибо

  • @alexanders1068
    @alexanders1068 2 ปีที่แล้ว +1

    Я попробовал 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?

  • @ПавелСергеевич-п8ж
    @ПавелСергеевич-п8ж 5 ปีที่แล้ว +4

    Хмм, у меня при scope="prototype" и 3 вызовах context.getBean инициализация выполняется 4 раза, при двух вызовах context.getBean 3 раза, при одном вызове context.getBean 2 раза. А в видео говорится, что число инициализаций соответствует числу вызовов метода. Это я что-то делаю не так, или ошибка в видео?

    • @alishevN
      @alishevN  5 ปีที่แล้ว +2

      Посмотрите, может где-то создается еще один объект (например он внедряется в тот объект, который вы получаете с помощью context.getBean()).

    • @ПавелСергеевич-п8ж
      @ПавелСергеевич-п8ж 5 ปีที่แล้ว +1

      @@alishevN Да, спасибо разобрался. У меня в бине musicPayer лежал контейнер со списком ссылок на другие бины, и когда закомментил в нем ссылку на этот бин стала выполняться только одна инициализация. Я думал что бин не инициализируется пока не вызываем context.getBean, но в случае со списком видимо идет инициализация в момент new ClassPathXmlApplicationContext

    • @mkrugl
      @mkrugl 4 ปีที่แล้ว +1

      Этот бы вопрос в топ, а то столько людей не понимало что происходит. (В том числе и я 😄).

  • @ama_zoomer
    @ama_zoomer 2 ปีที่แล้ว +2

    Вопрос, а почему у меня Spring-у получилось создать объект, когда я прописал factory-method, но не указал ему, что надо использовать factory-method? Он ищет подходящий метод автоматически?

    • @ama_zoomer
      @ama_zoomer 2 ปีที่แล้ว +2

      А, я нашел, почему. Spring настолько крутой, что он может с помощью reflections (не знаю, как правильней будет на русский перевести) делать конструктор доступным.

  • @ilyababcenco6864
    @ilyababcenco6864 4 ปีที่แล้ว +1

    Немного не понял с factory method, если я не указываю этот параметр в applicationContext и конструктор приватный, у меня полюбому объект класса ClassicalMusic создавался.

  • @stanislavshilo6022
    @stanislavshilo6022 3 ปีที่แล้ว +6

    Что важно, даже если я создам приватный конструктор ClassicalMusic, я не смогу создать объект словом new, но Spring может создать этот объект

    • @gmaster100500
      @gmaster100500 3 ปีที่แล้ว +2

      Потому что Spring использует Reflection API и джавовские конструкторы он не использует вообще.

    • @mopo3ujibhuk
      @mopo3ujibhuk 3 ปีที่แล้ว

      Это вообще круто.

    • @ЕвгенийКрупин-м2з
      @ЕвгенийКрупин-м2з 3 ปีที่แล้ว

      @@gmaster100500 Это вряд ли. Конструктор не только присваивает значения, но и может производить другие операции. Если их не использовать, это значит отбросить логику создания объекта заданную разработчиком.

  • @GoPetr
    @GoPetr 5 ปีที่แล้ว +2

    Ураа

  • @chokkitv379
    @chokkitv379 2 ปีที่แล้ว

    круто!

  • @ms_shifu7047
    @ms_shifu7047 5 ปีที่แล้ว +4

    мы уже скучаем по @ннот@циям

  • @himamahmudov8122
    @himamahmudov8122 5 ปีที่แล้ว +2

    При использовании factory method имеется ввиду фабричный паттерн как я понял. Но с другой стороны если метод создания объектов статический то мы не сможем переопределить этот метод и тогда отпадает смысл самого фабричного паттерна. Нам придетсся для каждого класса создавать свой create метод и спрашивается зачем нам тогда фабричный паттерн? Можете объяснить, пожалуйста

  • @Роман-й7к1з
    @Роман-й7к1з 4 ปีที่แล้ว +1

    Заметил кое-что интересное: если мы получаем prototype бин, то init-method вызывается, если не получаем и не создаем зависимость от него, то init-method не вызывается

  • @АлександрМакаров-ъ9ъ8б
    @АлександрМакаров-ъ9ъ8б 4 ปีที่แล้ว +1

    Сделал приватный конструктор и Spring все равно успешно инициализирует бин через Reflection API

    • @alishevN
      @alishevN  4 ปีที่แล้ว

      Да, о рефлексии у меня есть уроки здесь: www.udemy.com/course/javarussia/?referralCode=A36A8387475CAFDC6776

  • @OHOTOJIE1
    @OHOTOJIE1 3 ปีที่แล้ว +3

    Мало-ли кто-нибудь такой же лопух как я. Если у вас в singletone бине запускается только Init метод а destroy не работает, скорее всего вы закоментили или удалили метод context.close() Два часа мучался пока не сообразил.

  • @ilavio777
    @ilavio777 4 ปีที่แล้ว +1

    Что то init метод прошёл а вот destroi нет, в конце метода main есть запуск context.close; ? Eclipse среда если что.

  • @Виктор-э1ы6с
    @Виктор-э1ы6с 5 ปีที่แล้ว +1

    Уже несколько уроков не дает покоя вопрос.
    При создании экземпляра класса (например 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)!!!!!🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️

  • @НатальяШевченко-м6н
    @НатальяШевченко-м6н 2 ปีที่แล้ว

    Добрый день подскажите пожалуйста, если создать бины других классов метод init и destroy, которые определены только в Classicmusic, все равно выводятся в консоль?

  • @ВиталийТимонин-и6д
    @ВиталийТимонин-и6д 4 ปีที่แล้ว +1

    Так получается нет никакого смысла создавать фабрику на синглтоне? Она ведь как раз и предназначена для создания множества объектов? То есть надо использовать scope прототип? Или нет? Какой смысл в фабрике тогда? Или это способ адаптации фабрики в уже используемом классе под спринг? Объясни плиз поподробней.

  • @Libra7by
    @Libra7by 3 ปีที่แล้ว

    Правильно ли я понимаю, что Спринг - это большой сложный многофункциональный патерн "Абстрактная фабрика" (и не только)?
    До ваших курсов немного почитал книгу "Head First. Паттерны проектирования" - и прям ловлю вьетнамские флешбеки.

  • @blackmulthumor
    @blackmulthumor 4 ปีที่แล้ว

    Спасибо,

  • @RenatF
    @RenatF 4 ปีที่แล้ว

    Хорошо, что достаточно текста в презентациях. У кого нет слуха, думаю, лучше смогут лучше понять материал

  • @vladklichko556
    @vladklichko556 ปีที่แล้ว

    чем отличается создания объекта через init и через factory-method?

  • @HNKN4
    @HNKN4 ปีที่แล้ว

    Если Spring вызывает указанные init/destroy methods, но мы можем их не указывать явно. Значит ли, что у таких методов есть дефолтное значение?

  • @HNKN4
    @HNKN4 ปีที่แล้ว

    Получается Spring вызывает init method два раза? При создании объекта и после внедрения зависимости?

  • @arthurshishko1841
    @arthurshishko1841 4 ปีที่แล้ว +1

    Почему если поставить scope как prototype, то init метод вызывается два раза?

    • @eraeletay8020
      @eraeletay8020 4 ปีที่แล้ว

      потому что создается 2 объекта (бина), и срабатывает инит метод каждого из них

    • @ЯрославКозыревич-е5ф
      @ЯрославКозыревич-е5ф 3 ปีที่แล้ว

      Потому, что у нас есть ещё bean musicPlayer, который зависит от бина, который вызывает метод init, но у musicPlayer scope = singleton, и зависимость должна внедриться ещё до метода musicPlayer.getBean(), а именно при вызове метода classPathXmlApplicationContext(), соотвественно создаётся объект первый раз при вызове classPathXmlApplicationContext для musicPlayer, а после этого создаётся объект при вызове метода getBean для класса в котором есть наш метод init

  • @gevorgmkrtchyan7939
    @gevorgmkrtchyan7939 4 ปีที่แล้ว

    Does garbage collector delete the object after calling the ''destroy'' method?

  • @iljushka7198
    @iljushka7198 5 ปีที่แล้ว +7

    Spring Boot Rest будет через два года? :D

  • @b.s.3105
    @b.s.3105 4 ปีที่แล้ว

    привет Нил, я вот напоролся на один факт на 8:32 минуте ты обесняеш когда вызывается эти 2 метода только вот я удалил полностю создание обьектов в методе Main и оставил создание обьекта ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); и закрытие его так вот эти методы вызвались ...... как я понимаю не зависит от того создаёш ты бины или нет в Main-e это работает на подобие Статик Блока в Классе

  • @RuslanMurzin-uz8fj
    @RuslanMurzin-uz8fj ปีที่แล้ว

    Начиная с Java 11 чтобы javax.annotation.PostConstruct и PreDestroy появились нужно добавить зависимость javax.annotation-api

  • @dmitrylubyanov7277
    @dmitrylubyanov7277 4 ปีที่แล้ว +4

    Немного не понял, но у меня почему-то создается экземпляр класса с приватным конструктором. При том что фабричный метод даже не создавал.

    • @alishevN
      @alishevN  4 ปีที่แล้ว +2

      Это благодаря рефлексии.

    • @manOfPlanetEarth
      @manOfPlanetEarth 4 ปีที่แล้ว

      напиши сюда этот код

  • @АлексейБуторин-в1т
    @АлексейБуторин-в1т 2 ปีที่แล้ว

    Материал подается очень доступно и понятно. Хочу продолжить изучение (купить курс на udemy). Как оплатить курс рублями в РФ (не используя биткоины) ? Спасибо.

    • @alishevN
      @alishevN  2 ปีที่แล้ว

      Здравствуйте, Алексей!
      Курс доступен в РФ вот здесь: swiftbook.org/courses/438

  • @parabola47
    @parabola47 5 ปีที่แล้ว +1

    А почему если в бине установлен scope prototype, то init-метод вызывается 1 лишний раз?

    • @shtormlbt
      @shtormlbt 5 ปีที่แล้ว

      init-метод вызывается каждый раз при создании нового объекта.

    • @parabola47
      @parabola47 5 ปีที่แล้ว

      ​@@shtormlbt у меня в коде объект создаётся два раза, а init-метод вызывается три раза. Если я не буду создавать ни одного объекта, то инит-метод вызывается один раз

    • @mksnkv
      @mksnkv 5 ปีที่แล้ว

      @@parabola47 нашли причину?

    • @parabola47
      @parabola47 5 ปีที่แล้ว

      @@mksnkv нет, есть только предложение, что в первый раз объект создаётся системой(т.е. самим спрингом) и никуда не предоставляется..

    • @mksnkv
      @mksnkv 5 ปีที่แล้ว

      @@parabola47 насколько я понял, prototype не должен создавать бин, пока не вызовется getBean()

  • @zaordu4427
    @zaordu4427 2 ปีที่แล้ว

    Чем init-method принципиально лучше конструктора/инциализатора класса? добавил в класс с музыкой, он вызывается даже раньше init'a (вне зависимости от scope). з.ы. ролики просто шикарные, огромное спасибо за труд автору

    • @komdiv4906
      @komdiv4906 2 ปีที่แล้ว +2

      Если внедряются зависимости в поля то init-metod будет уже знать о них, а конструктор еще нет.

  • @shtormlbt
    @shtormlbt 5 ปีที่แล้ว +1

    Вы еще делаете этот курс? Его нет на udemy? Или где то еще. Или может можно уже купить весь курс?

    • @alishevN
      @alishevN  5 ปีที่แล้ว +1

      Курс в процессе записи

  • @arcadyivanov
    @arcadyivanov 3 ปีที่แล้ว

    В уроке 8 для фабричного метода подойдёт модификатор private. Spring-у метод будет доступен. А вот юзер уже никак не создаст объект мимо Spring-а.

  • @sokprorok6037
    @sokprorok6037 11 หลายเดือนก่อน

    Сделал все, как в уроке, но дестрой-метод не отработал (сообщение не вывелось, будто его и нет). А инит-метод отработал.
    В чём может быть дело? Scope поставил "singleton".

    • @сайфумалик
      @сайфумалик 3 หลายเดือนก่อน

      надо закрыть контекст и тогда появится

  • @Lorienl2master
    @Lorienl2master 3 ปีที่แล้ว

    так их не будет уничтожать сборщик мусора из ява кор?

  • @andriiostashevskyi3465
    @andriiostashevskyi3465 4 ปีที่แล้ว

    @PostConstruct аноташка сечяс актуальна.. так как от xml стараются отказиватся

  • @MultiWismut
    @MultiWismut 4 ปีที่แล้ว

    Экземпляр бина будет создаваться при приватном конструкторе и без factory method. Рефлексия?

  • @АртёмЗ-ъ3у
    @АртёмЗ-ъ3у 4 ปีที่แล้ว

    Наиль, вся надежда на тебя:) подскажи, пожалуйста, как на макбуке сделать завершение команд с помощью TAB?

    • @alishevN
      @alishevN  4 ปีที่แล้ว

      Каких команд?

    • @АртёмЗ-ъ3у
      @АртёмЗ-ъ3у 4 ปีที่แล้ว

      Например git chec TAB получается checkout

    • @alishevN
      @alishevN  4 ปีที่แล้ว

      вообще это по умолчанию работает для всех команд, но для гита надо еще установить вот это: github.com/bobthecow/git-flow-completion/wiki/Install-Bash-git-completion

  • @denwerxampp4035
    @denwerxampp4035 4 ปีที่แล้ว

    ребята, а как комментировать двумя слэшами ("// ") выделенные строки? Какое-то сочетание клавиш ?

    • @daniilkoryto6511
      @daniilkoryto6511 4 ปีที่แล้ว +1

      ctrl+слеш (если дефолтные настройки, то на английской раскладке)

    • @Андрей-Зубков
      @Андрей-Зубков 4 ปีที่แล้ว +1

      ctrl + /, только смотри чтобы раскладка клавиатуры была EN, а то просто "свернёшь" код

  • @Light-qo9vo
    @Light-qo9vo 5 ปีที่แล้ว

    Уроки супер, на практике очень быстро всё воспринимается!! Интересно почему прописуешь бины через xml? И планируешь ли в будущем уроки с аннотациями?

    • @alishevN
      @alishevN  5 ปีที่แล้ว +2

      На следующем уроке уже будут аннотации

  • @flatmapper
    @flatmapper 5 ปีที่แล้ว +1

    вы берете контент с w3schools? Курс будет полностью бесплатный или продолжение будет платным?

    • @alishevN
      @alishevN  5 ปีที่แล้ว

      я не знаю, что такое w3schools.
      я подумаю.

  • @mihailostapchuk1167
    @mihailostapchuk1167 5 ปีที่แล้ว

    Подскажите, почему если сделать конструктор приватным, то getBean() будет также отдавать бины как и обычно? Контекст что для создания бинов не использует конструктор?

    • @alishevN
      @alishevN  5 ปีที่แล้ว +1

      Да, Spring сможет создать бины из класса даже если у этого класса приватный конструктор. Дело в том, что Spring Framework не напрямую использует ключевое слово new для создания новых объектов класса, а использует механизм, который называется Рефлексия (Java Reflection API). С помощью рефлексии Spring Framework обходит все ограничения языка, связанные с областью видимости. Об этом я немного говорю в Уроке 10, где показываю, что Spring может внедрять зависимости даже в приватные поля.
      Подробные и понятные уроки про Рефлексию есть в моем курсе "Продвинутая Java" - www.udemy.com/javarussia/?couponCode=ADVANCED_JAVARUSSIA

    • @mihailostapchuk1167
      @mihailostapchuk1167 5 ปีที่แล้ว

      Спасибо за ответ, все понятно.

  • @slavkinsmoke38
    @slavkinsmoke38 3 ปีที่แล้ว

    Я думаю стоило рассказать про destroy-method подробнее, потому что если выскочит исключение, то destroy-method не сработает и как этого избежать