Жизненный цикл бина, BeanPostProcessor, @PostConstruct

  Рет қаралды 7,858

deadlocksOfDeadBlocks

deadlocksOfDeadBlocks

4 жыл бұрын

1) 0 - 14:00 Зачем нужны PostConstruct и PreDestroy
2) 15:00 - интерфейс BeanPostProcessor
3) 17:00 - AutowiredAnnotationBeanPostProcessor
4) 18:12 - рисуем процесс создания бина + приоритетность
5) 21:50 CommonAnnotationBeanPostProcessor
6) 25:25 - создаем свой BeanPostprocessor

Пікірлер: 35
@IKar-ru
@IKar-ru 4 жыл бұрын
Достаточно детально, практично и наглядно. Не смотря на то, что описываются не самые простые и базовые понятия, все понятно. Спасибо вам, пишите еще видео!
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 4 жыл бұрын
Спасибо! Скоро будут новые)
@dtts77
@dtts77 3 жыл бұрын
Ахаха, с рисунка выпал, сразу видно, что человек реально шарит (сам такими каракулями раньше объяснял :D ). Сам урок - топовый, удачи во всем!
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 3 жыл бұрын
Ахахах - я сам со своих рисунков периодически ловлю кринж :D Спасибо !
@89568756867835678
@89568756867835678 Жыл бұрын
вай спасибо тебе добрый человек за такое хорошее объяснение!!!☕
@user-dz9yr2bv5b
@user-dz9yr2bv5b 4 жыл бұрын
Круто делаешь! Спасибо за труд)
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 4 жыл бұрын
Спасибо!)
@olegeek
@olegeek 4 жыл бұрын
Супер!! :) Очень полезное и нужно дело делаешь!
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 4 жыл бұрын
Спасибо большое!)
@user-bq6xi8vd3u
@user-bq6xi8vd3u 2 жыл бұрын
оочень круто!
@fife3366
@fife3366 3 жыл бұрын
Видос просто топ, спасибо!
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 3 жыл бұрын
Рад, что видос пригодился ;]
@lindx2533
@lindx2533 3 жыл бұрын
10:56 стоит уточнить что PostConstruct лежит в javax. javax.annotation javax.annotation-api 1.3.2
@user-gh1tw1my1v
@user-gh1tw1my1v 2 жыл бұрын
очень полезно
@user-oq2qz1st3f
@user-oq2qz1st3f Жыл бұрын
Спасибо
@BackstageNomad
@BackstageNomad 2 жыл бұрын
все круто, после потрошителя самое то
@volodymyrkhoma9917
@volodymyrkhoma9917 4 жыл бұрын
Очередной полезный урок. Спасибо! Кстати, есть ли необходимость возвращать свойство Accesible в его первоначальное значение?
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 4 жыл бұрын
Спасибо Вам, за приятные слова) Поле само по себе остается приватным, оно становится публичным лишь для переменной Field. Насколько я знаю в этом необходимости нет
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 4 жыл бұрын
В качестве домашнего задания можете написать аналогичный примеры для xml и попробовать ответить на вопрос: Как работает autowired и AutowiredAnnotationBeanPostProcessor, если у нас единственный конструктор с аннотацией autowired над ним (для этого можно покопаться в исходниках спринга - даже если не найдете ответа - наверняка узнаете что-то новое о спринге)
@jispainsooner2825
@jispainsooner2825 3 жыл бұрын
Если единственный конструктор, то @Autowired можно не указывать(над конструктором).
@antonkl858
@antonkl858 3 жыл бұрын
Интересно, спасибо. Только не понял, где должен быть BeanDefinition
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 3 жыл бұрын
Спасибо! Напишите на какой минуте непонятны мои объяснения - и я постараюсь ответить)
@antonkl858
@antonkl858 3 жыл бұрын
@@deadlocksofdeadblocks7225 Я не нашел на видео где и как работает BeanDefinition. Вы его видимо тут проигнорировали. Возможно он не так важен в данном контексте?
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 3 жыл бұрын
@@antonkl858 Если мне не изменяет память - я хотел сделать вторую часть урока "Как Spring работает с аннотациями, создаем свой контекст (часть 1)" - где уже детальнее хотел рассказать как работает спринг (про BeanDefinition, фабрики и тд) но руки не дошли... Думаю в будущем восполню этот пробел Вот хорошая статья на хабре, которая, возможно, может вам помочь habr.com/ru/post/222579/
@antonkl858
@antonkl858 3 жыл бұрын
@@deadlocksofdeadblocks7225 thx
@caffeinejavacode1475
@caffeinejavacode1475 3 жыл бұрын
Можем ли мы вместо метода init написать обычный метод?
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 3 жыл бұрын
Не совсем понял вопрос) Если вы имеете ввиду название - то название у метода может быть любое, не обязательно "init")
@caffeinejavacode1475
@caffeinejavacode1475 3 жыл бұрын
@@deadlocksofdeadblocks7225 я не пойму в каких реальных случаях можно его использовать, не простo sout а реальный кейс, не могу найти пример, а на собесе спрашивают
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 3 жыл бұрын
​@@caffeinejavacode1475 Честно говоря примеров может быть масса - условно говоря - это зависит от архитектуры класса/проекта. Например, логирование: public class Foo { @Inject Logger LOG; @PostConstruct public void fooInit(){ LOG.info("This will be printed; LOG has already been injected"); } public Foo() { LOG.info("This will NOT be printed, LOG is still null"); // NullPointerException will be thrown here } } Если вызвать метод логирования в конструкторе - будет NPE. Если вызвать логирование в PostConstruct - все будет ок, потому что бин LOG заинжектится уже к этому моменту. На серверах часто пишут логирование - чтобы отслеживать ошибки/ворнинги. Вот второй пример - когда мы хотим добавить юзеров по дефолту: @Component public class DbInit { @Autowired private UserRepository userRepository; @PostConstruct private void postConstruct() { User admin = new User("admin", "admin password"); User normalUser = new User("user", "user password"); userRepository.save(admin, normalUser); } } Еще например можно отрывать соединение с базой (ее бин инжектится) Но опять же - вариантов использования может быть немало) Мой совет - дполнительно к моим словам посмотрите реальные проекты на гитхабе в которых она используется)
@s.portowyi15
@s.portowyi15 3 жыл бұрын
6:56 над конструктором @Autowired можно и не ставить.
@dusheslov2700
@dusheslov2700 3 жыл бұрын
Чювак, спасибо за уроки но в этом ты сильно тупишь) ты в конструкторе пытаешься воспользоваться не инициализированными полями и spring тут не причём)) я уверен ты и сам понимаешь свой затуп)))))))))))))))))))))))))))))))))))))))))))))))))
@deadlocksofdeadblocks7225
@deadlocksofdeadblocks7225 3 жыл бұрын
Напиши таймкод
@dusheslov2700
@dusheslov2700 3 жыл бұрын
@@deadlocksofdeadblocks7225 забей, ты дальше говоришь что так работать не будет но это было логично что не будет))
Spring Scope Prototype, Singleton
40:03
deadlocksOfDeadBlocks
Рет қаралды 1,4 М.
Spring @Configuration и @Component  одно и тоже? Или нет?
17:00
deadlocksOfDeadBlocks
Рет қаралды 2,9 М.
Double Stacked Pizza @Lionfield @ChefRush
00:33
albert_cancook
Рет қаралды 85 МЛН
Despicable Me Fart Blaster
00:51
_vector_
Рет қаралды 27 МЛН
Mom's Unique Approach to Teaching Kids Hygiene #shorts
00:16
Fabiosa Stories
Рет қаралды 31 МЛН
Синхронизация горутин с помощью errgroup
13:44
Нина Пакшина
Рет қаралды 243
Spring Framework. Жизненный цикл
19:10
PavelVil
Рет қаралды 5 М.
Java Spring Контекст
1:16:04
Jetbulb
Рет қаралды 45 М.