Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
Речь про Видосики Евгения Борисова.

гугл выдаёт только вторую версию. Первую никак не найти(про мальчика который не любил интерфейсы).

Сколько их всего?
12 июл 19, 12:08    [21925613]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
up
15 июл 19, 13:10    [21926728]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
andreykaT
Member

Откуда:
Сообщений: 2376
у них было вроде на сайте. ща только вторая часть осталась. может права какие нить не поделили?
15 июл 19, 15:43    [21926889]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
andreykaT
у них было вроде на сайте. ща только вторая часть осталась. может права какие нить не поделили?

Печально если так. Чувак умеет объяснять.
15 июл 19, 23:12    [21927131]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
questioner,

Вот что-то нашёл. Но это не исчерпывающий список
16 июл 19, 11:49    [21927383]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
видосики потрошителя
16 июл 19, 12:58    [21927463]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
Вот кстати про того самого мальчика: [youtube=
Ссылка на позицию в клипе: https://youtu.be/U8MtGYa04v8?t=2663
]
16 июл 19, 14:02    [21927552]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
Вот тут я не понял:

Картинка с другого сайта.

позиция в видео: [youtube=
Ссылка на позицию в клипе: https://youtu.be/wQcZK0Tln30?t=1197
]

Говорят, что BeanFactoryPostProcesor-ы и BeanPostProcessor-ы идут после ContextRefreshedEvent.

Я смотрел потрошителя и понял, что ContextRefreshedEvent идёт после всех BPP. В чём прикол?
18 июл 19, 22:16    [21929763]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
Потрошитель:
Картинка с другого сайта.

[youtube=
Ссылка на позицию в клипе: https://youtu.be/BmBr5diz8WA?t=3841
]
18 июл 19, 22:21    [21929766]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
[youtube=
Ссылка на позицию в клипе: https://youtu.be/BmBr5diz8WA?t=3841
]
18 июл 19, 22:22    [21929767]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
@PostConstruct это между первым и вторым проходом BPP
18 июл 19, 22:24    [21929769]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
забыл ник
Member

Откуда:
Сообщений: 2945
какая же все таки жесть
18 июл 19, 23:16    [21929802]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1480
забыл ник
какая же все таки жесть
PostPostPostConstructor?)))
19 июл 19, 08:16    [21929891]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3293
PetroNotC Sharp
PostPostPostConstructor?)))
Лучше вот такие доклады вообще не смотреть, или хотябы проверять что там рассказывают... У докладчика скорее всего какие мысли здравые были, но раскрыл он их плохо...

Вот докладчик утверждает, что в @PostConstructor транзакции недоступны, что вообще-то неверно, вот стэк из живого приложения - вроде работают транзакции в @PostConstruct:
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
	at com.sun.proxy.$Proxy180.getList(Unknown Source)
...
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
Путаница скорее всего возникает из-то того что докладчик смешал в кучу ЖЦ бинов и ЖЦ контекста, при этом для бинов таки все довольно очевидно, вот такое не будет работать:
@PostConstruct
@Transactional
void init() {
}
потому что никто не обещал, а такое:
@PostConstruct
void init() {
  doInit();
}

@Transactional
void doInit() {
}
не будет работать потому что и не должно оно работать вообще - вызов идет мимо прокси, а если в @PostConstruct другой бин вызывать, то все будет нормально (есть случаи когда оно глючит нещадно, но оно больше про то, что @PostConstruct при любой возможности нужно избегать)
19 июл 19, 15:33    [21930377]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
andreykaT
Member

Откуда:
Сообщений: 2376
ессли ты нормальный бинконфиг напишешь то постконстракт вроде как и не нужен. он нужен для лентяев кто не хочет в конфигах нужные действия указать.
19 июл 19, 15:49    [21930408]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3293
andreykaT
он нужен для лентяев кто не хочет в конфигах нужные действия указать.
Нужен он, но не в качестве замены того, что можно воткнуть в конструктор.
19 июл 19, 15:56    [21930417]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
Андрей Панфилов
вот стэк из живого приложения - вроде работают транзакции в @PostConstruct

Его доклад вообще никак не противоречит тому, что Вы написали. Он даже говорит, что ему советуют для такого кейса TransactionMenedger инжектить, но он не очень хочет этого делать ибо самописная обработка ошибок и всё такое.



автор
потому что никто не обещал:

Автор доклада ставит вопрос почему не обещает и отвечает на него

Андрей Панфилов
@PostConstruct при любой возможности нужно избегать

Почему?
Андрей Панфилов
есть случаи когда оно глючит нещадно

Хотелось бы примеров когда это нещадно глючит. Перекрёстные ссылки?

Андрей Панфилов
не будет работать потому что и не должно оно работать вообще - вызов идет мимо прокси


Автор доклада утверждает, что проксей НАД ДАННЫМ БИНОМ ещё нет.
22 июл 19, 11:16    [21931525]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

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

Наивненько: https://stackoverflow.com/a/3406631/2674303
22 июл 19, 11:18    [21931527]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3293
questioner
Его доклад вообще никак не противоречит тому, что Вы написали. Он даже говорит, что ему советуют для такого кейса TransactionMenedger инжектить, но он не очень хочет этого делать ибо самописная обработка ошибок и всё такое.
Ты опять не читаешь и не слушаешь чтоли? начиная с 49:35 откровенная дичь:
Борисов
Есть сервис с методом warmUpCache, где вызывать это метод?
вызывать в конструкторе не вариант, потому что на этапе работы конструктора ничего не настроено
...
транзакции на этапе @PostConstruct еще не существует
это все неверно (проверить в качестве легкого упражнения), а то что дальше с ApplicationListener - это вообще треш и угар.
22 июл 19, 14:06    [21931731]     Ответить | Цитировать Сообщить модератору
 Re: Где посмотреть спринг паззлеры в хронологическом порядке?  [new]
questioner
Member

Откуда:
Сообщений: 1733
Андрей Панфилов
questioner
Его доклад вообще никак не противоречит тому, что Вы написали. Он даже говорит, что ему советуют для такого кейса TransactionMenedger инжектить, но он не очень хочет этого делать ибо самописная обработка ошибок и всё такое.
Ты опять не читаешь и не слушаешь чтоли? начиная с 49:35 откровенная дичь:
Борисов
Есть сервис с методом warmUpCache, где вызывать это метод?
вызывать в конструкторе не вариант, потому что на этапе работы конструктора ничего не настроено
...
транзакции на этапе @PostConstruct еще не существует
это все неверно (проверить в качестве легкого упражнения), а то что дальше с ApplicationListener - это вообще треш и угар.


Ну придраться конечно можно, но в целом понятно, что он имеет вввиду. Но наверное, если ты первый раз это видишь, то это может спутать карты.

А что не так про ApplicationListener то ?

P.S.

Там суть его рассказа в том, что сначала первый проход BPP, потом init/postConstruct и только потом второй проход BPP. Все прокси накручиваются при втором проходе
23 июл 19, 11:42    [21932496]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить