powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / ServletContextListener.contextInitialized() выполнянется два раза
25 сообщений из 51, страница 2 из 3
ServletContextListener.contextInitialized() выполнянется два раза
    #39990358
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote=Zzz79] [quote=mad_nazgul]
ИМХО lombok не особо нужен.
Как минимум в IDEA и Eclipse можно создавать getter/setter и пр. через автогенерацию.
Вместо lombok можно взять Kotlin. ;-)
У lombok есть сайдэфекты, при работе со Spring [ [spoiler] url=
YouTube Video
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990373
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ломбок - это скотч которым сбоку к проекту что-то "примотали".
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990388
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати предлагаю Джону Смиту вместо ответа на вопрос порассуждать чем POJO объекты отличаются
от всех остальных.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990395
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
mayton
Кстати предлагаю Джону Смиту вместо ответа на вопрос порассуждать чем POJO объекты отличаются
от всех остальных.

первым делом джон бы спросил,майтон - ты против договоренностей и раз так обьясни что такое POJO в твоем понимании)

Ты хочешь против меня использовать приёмы риторики. Не надо этого делать.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990402
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
mayton
Ломбок - это скотч которым сбоку к проекту что-то "примотали".

нифига ты не прав)
я думаю ты же понимаешь что такое ломбок в реальностти)
скомпилированый код выглядит так же ,как еслм бы ты нагадил там в ручную гет/сет + прочая лажа
так зачем нам в исходниках вся эта чулочная фабрикпс.олды как бы вы не сопротивлялись ломбок уже на проде крупнейших банков)я могу сказать что есть он в ГПБ и Сбере,Альфе и херовой тонне их партнеров)

тоесть можно сколько угодно пукать в воздух - но бут ,ломбок и ОРМ уже тут и давно тут)

хотите по другому- вам на кворк)

Зачем мне бинарник. Я после того как отдал его кастомеру - просто забываю о нем.
Мне исходный код важен. Я с ним работаю. И я плачу своим личным временем за все
технические долги.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990416
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот поэтому я и не люблю бины.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990439
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79

Ну и чем тебя не устраивает исходник с ломбоком?ты же знаешь что там будет таже портянка


С ломбоком, проблема в том, что он работает во время компиляции.
Поэтому рефлексия может работать странно.
Плюс начиная с 11 версии вообще рефлексия была поломана.
Так что как себя ведет ломбок на версиях джавы выше 11 не понятно.
И как бы особого удобства ломбок не приносит.
Иногда на сложных многомодульных проектах у ИДЕЯ от ломбока может "сносить крышу".
Плюс плагин для ломобока иногда не поспевает за EAP IDEA.

Если говорить об удобствах, то имеет смысл как альтернативу ломбок посмотреть на Котлин.
Data Class + лямбда apply решают все кейсы ломбока, при этом сам Котлин дает кучу "плюшек".
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990461
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
С ломбоком, проблема в том, что он работает во время компиляции.
Поэтому рефлексия может работать странно.
Плюс начиная с 11 версии вообще рефлексия была поломана.
Так что как себя ведет ломбок на версиях джавы выше 11 не понятно.
Чет боюсь рефлексия относится к lombok таким же образом как и спринг к особенностям конкретного сериализатора, т.е. никак.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990673
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Чет боюсь рефлексия относится к lombok таким же образом как и спринг к особенностям конкретного сериализатора, т.е. никак.


В ссылке, которой я давал, как раз разбирается кейс, когда Spring ведет себя странно из-за рефлексии и ломбока.
Ломбок работает, не так однозначно, как хотелось бы. Точно так же как и Spring.
А уж когда их "скрещивают", может быть все что угодно. :-)

Это, кстати, касается и Kotlin. По началу Spring работал с Kotlin очень странно.
Сейчас нормально. Может быть с ломбоком, сейчас проблем в Spring нет.

Я сейчас не использую ломбок, т.к. использую Kotlin.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990695
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
В ссылке, которой я давал, как раз разбирается кейс, когда Spring ведет себя странно из-за рефлексии и ломбока.
Ломбок работает, не так однозначно, как хотелось бы. Точно так же как и Spring.
А уж когда их "скрещивают", может быть все что угодно. :-)

Это, кстати, касается и Kotlin. По началу Spring работал с Kotlin очень странно.
Сейчас нормально. Может быть с ломбоком, сейчас проблем в Spring нет.

Я сейчас не использую ломбок, т.к. использую Kotlin.


Прямо откровение за откровением можно сказать... По ссылке что вы привели происходит следующее: два имбецила впихивают бизнес-логику в POJO и удивляются чего это оно работает не так как ожидается - так делать не нужно, потому то есть более правильные способы, это раз. Если попытаться разобраться в "проблеме" более глубже, то можно найти например такое обсуждение: https://github.com/FasterXML/jackson-databind/issues/1239, суть его примерно в следующем: в джексоне этих аннотаций для поддержки десериализации понакручено столько, что толком разобраться в том что происходит при включении тех или иных модулей и/или смене версий вообще невозможно, вывод отсюда такой: не нужно ничего накручивать вообще, а чем проще тем лучше. Lombok к поведению джексона здесь вообще никаким образом: они добавили java.beans.ConstructorProperties в далеком 2010 году, потому что в то время вообще не было никакой возможности узнать имена параметров к конструктора (java.lang.reflect.Executable#getParameters появился только в 1.8)

Spring ко всему этому имеет единственное отношение: имбецилы из бута (привет Стасу) зачем-то тащат lombok (у которого scope вообще должен быть provided) в spring-boot-dependencies, а хомячки радостно этот spring-boot-dependencies себе в проекты импортируют, как итог при смене версии бута еще и байткод начинает другой генерироваться.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990841
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

Вот об этом и речь.
Нафига использовать ломбок, если он не облегчает жизнь а усложняет.
Нужно уметь его готовить чтобы использовать.
При этом PROFIT'а от него 0.
Все что он может делается в IDE, без каких либо проблем.
<:o)
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990860
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Нафига использовать ломбок, если он не облегчает жизнь а усложняет.

с фига ли он не облегчает? еще как облегчает

mad_nazgul
Нужно уметь его готовить чтобы использовать

что там уметь? просто знать что он генерит?

mad_nazgul
При этом PROFIT'а от него 0

профит есть - меньше бессмысленного кода, отвлекающего от сути.

mad_nazgul
Все что он может делается в IDE, без каких либо проблем.

проблемы есть - нужны плагины (для того же builder, fluent, etc) и в итоге снова тонны бессмысленного кода
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990865
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Билдер не имеет мотивации к использованию в языках программирования где нет конструктора или он
необязателен но тем не менее вы можете спокойно инициализировать все поля.

И хотя контракт билдера может быть чуть сложнее чем просто инициализация полей - тем не менее.

Я думаю что в этих языках вы билдера просто не найдете.
Поэтому не стал бы идеализировать билдер или выделять его в какую-то особу категорию.

IDE позволяет поставить плагин которые печет билдеры как печенюшки? Позволяет.

Так-же как мы поступаем с toString, hashCode, equals. Мы на 99% доверяем IDE процесс кодо-генерации
и лишь слегка делаем измеенения там где нас что-то не устроило.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990893
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Билдер не имеет мотивации к использованию в языках программирования где нет конструктора или он
необязателен но тем не менее вы можете спокойно инициализировать все поля.

И хотя контракт билдера может быть чуть сложнее чем просто инициализация полей - тем не менее.

Я думаю что в этих языках вы билдера просто не найдете.
Поэтому не стал бы идеализировать билдер или выделять его в какую-то особу категорию.

[закатывает глаза], 3 абзаца текста... в каком месте я его идеализирую и выделяю в особую категорию ?
Это был просто пример конструкции, требующей массы довольно тривиального кода. Один из.

mayton
IDE позволяет поставить плагин которые печет билдеры как печенюшки? Позволяет.
Так-же как мы поступаем с toString, hashCode, equals. Мы на 99% доверяем IDE процесс кодо-генерации
и лишь слегка делаем измеенения там где нас что-то не устроило.
Зачем генерить 99% того, что мы не будем менять? я не знаю, стоит ли на 3й странице все еще пытаться доказывать преимущества отсутствия boilerplate по сравнению с его наличием. видимо нет.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990899
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha, да ладно не переживай так. Я просто забыл добавить что это грёбаное IMHO.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990913
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Вот об этом и речь.
О чем речь-то? Вы утверждали что lombok ломает все и вся и имеет кучу проблем, а как выяснилось это не то что не совсем так, а даже совсем не так, ну и виртуозно им владеть совсем не нужно уметь, вон разработчики из бута мавеном пользоваться не умеет, а что-то при этом разрабатывают. Теперь вы решили переобуться и мы узнаем, что ну раз уж lombok не вредный, то он уж 100% бесполезный, иначе никак. А вот теперь вопрос: зачем мне на code review заниматься фигней и прорываться через портянки кода в надежде определить правильно там equals и hashCode реализованы или нет? или все ли там в конструкторы добавлено или нет? зачем мне вообще лишний код видеть?
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39990991
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
не понимаю противников ломбока
потому что ты не особо в теме: чтобы генерить код lombok использует "дыры" в javac, потому что по жавской конвенции AnnotationProcessor не должен гадить в генерируемый байткод, а должен складывать результат своей работы куда-то в другое место, т.е. с компиляторами отличными от javac lombok не работает, а это в свою очередь означает, что, например, полноценно с AspectJ работать оно не будет, точнее post compile time weaving работать может и будет (тут со средой разработки еще придется заморочиться), но вот inter-type declarations уже гарантированно отвалятся.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39991001
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
mad_nazgul

Вот об этом и речь.
О чем речь-то? Вы утверждали что lombok ломает все и вся и имеет кучу проблем, а как выяснилось это не то что не совсем так, а даже совсем не так, ну и виртуозно им владеть совсем не нужно уметь, вон разработчики из бута мавеном пользоваться не умеет, а что-то при этом разрабатывают. Теперь вы решили переобуться и мы узнаем, что ну раз уж lombok не вредный, то он уж 100% бесполезный, иначе никак. А вот теперь вопрос: зачем мне на code review заниматься фигней и прорываться через портянки кода в надежде определить правильно там equals и hashCode реализованы или нет? или все ли там в конструкторы добавлено или нет? зачем мне вообще лишний код видеть?


Я не утверждал, что ломбок ломает все и вся.
Я говорил, что при использовании ломбок могут возникнуть проблемы.
И что решение проблем не стоит того PROFIT, который дает ломбок.
Вы же подвердили мои слова, сказав, что ломбок надо уметь готовить.

Возникает вопрос - "Зачем?"
Зачем уметь готовить ломбок, когда можно его не использовать?
Все что "умеет" ломбок, делает кодогенерация в IDE.
При этом никаких побочных эффектов.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39991043
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Я говорил, что при использовании ломбок могут возникнуть проблемы.

проблемы могут возникнуть в любой момент с чем угодно. например с кривыми руками

mad_nazgul
Вы же подвердили мои слова, сказав, что ломбок надо уметь готовить.

вообще-то он написал совершенно противоположное. a готовить таки надо уметь то, у чего проблемы могут возникнуть и без ломбока.

mad_nazgul
И что решение проблем не стоит того PROFIT, который дает ломбок.

стоит, т.к. профит в плане удаления boilerplate в разы больше по сравнению с введением в язык лямбд, var и stream-ов вместе взятых.

mad_nazgul
Возникает вопрос - "Зачем?"

мы, по-моему, ходим кругами.

mad_nazgul
Все что "умеет" ломбок

ломбок умеет больше

mad_nazgul
кодогенерация в IDE.

кодогенерация бесполезного кода (тут прозвучала цифра 99% с которой я согласен) в исходник идет в задницу
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39991146
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Все что "умеет" ломбок, делает кодогенерация в IDE.
При этом никаких побочных эффектов.
У вас отношение к кодогенерации несколько превратное. Вот для меня кодогеренация, это когда у нас есть "нечто", написанное на каком-то DSL, мы вызываем mvn compile и на выходе у нас это же самое "нечто", но уже на другом DSL, а вот регулярное выполнение одной и той же последовательности каких-то действий в IDE - это не кодогенерация, а онанизм, как пример: мы можем один XML преобразовать в другой посредством применения регулярных выражений, а можем написать XSLT, в этом случае второй подход, очевидно, более качественный (я встречался с проектами, где бины по XSD/WSDL/YAML генерировали средой и сгененированный результат пихали прямо в СКВ - душераздирающее зрелище). То что вам что-то умеет генерировать среда - это никакой не контракт, и никто не гарантирует что все разработчики в команде будут выполнять одни и те же действия в одной и той же последовательности: завтра кто-то забьет и просрет конвенцию на is/get в случае boolean/Boolean, после завтра кто-то потеряет поля в equals и hashCode, а через день прилетит ПР исправляющий предыдущие косяки, в котором черт ногу сломит из-за тонны однотипного кода. Вопрос: зачем это все мне, когда есть 5 наиболее распространенных аннотаций, которые снимают кучу головной боли?
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39991315
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha

кодогенерация бесполезного кода (тут прозвучала цифра 99% с которой я согласен) в исходник идет в задницу


Так зачем использовать Java, когда можно использовать Kotlin, где эта кодогенерация в принципе не нужна?
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39991316
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
mad_nazgul
Все что "умеет" ломбок, делает кодогенерация в IDE.
При этом никаких побочных эффектов.
У вас отношение к кодогенерации несколько превратное. Вот для меня кодогеренация, это когда у нас есть "нечто", написанное на каком-то DSL, мы вызываем mvn compile и на выходе у нас это же самое "нечто", но уже на другом DSL, а вот регулярное выполнение одной и той же последовательности каких-то действий в IDE - это не кодогенерация, а онанизм, как пример: мы можем один XML преобразовать в другой посредством применения регулярных выражений, а можем написать XSLT, в этом случае второй подход, очевидно, более качественный (я встречался с проектами, где бины по XSD/WSDL/YAML генерировали средой и сгененированный результат пихали прямо в СКВ - душераздирающее зрелище). То что вам что-то умеет генерировать среда - это никакой не контракт, и никто не гарантирует что все разработчики в команде будут выполнять одни и те же действия в одной и той же последовательности: завтра кто-то забьет и просрет конвенцию на is/get в случае boolean/Boolean, после завтра кто-то потеряет поля в equals и hashCode, а через день прилетит ПР исправляющий предыдущие косяки, в котором черт ногу сломит из-за тонны однотипного кода. Вопрос: зачем это все мне, когда есть 5 наиболее распространенных аннотаций, которые снимают кучу головной боли?


Хороший аргумент.
Просто я данную проблему обычно решаю через codestyle и ревью кода.
Но если для вас, это преимущество является решающим, то да. Для вас ломбок удобная вещь.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39991344
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Так зачем использовать Java, когда можно использовать Kotlin, где эта кодогенерация в принципе не нужна?

заранее прошу прощения за аналогию: а зачем вытирать попу бумажкой, если есть биде ;) ? Нет возможности пользоваться котлин, по-крайней мере на ява-проектах. Да и на андроид-проектах - переписывать, то что есть, смысла нет, мешать в кучу - будет бардак.
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39991398
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
mad_nazgul
Так зачем использовать Java, когда можно использовать Kotlin, где эта кодогенерация в принципе не нужна?

заранее прошу прощения за аналогию: а зачем вытирать попу бумажкой, если есть биде ;) ? Нет возможности пользоваться котлин, по-крайней мере на ява-проектах. Да и на андроид-проектах - переписывать, то что есть, смысла нет, мешать в кучу - будет бардак.


ИМХО аналогия не точная.
Биде это скорее Scala, а не Kotlin.

Если продолжать "сортирную" аналогию.
То зачем вытирать попу газеткой (Java), когда есть туалетная бумага (Kotlin)
<:o)

А так, Kotlin в проекте, это обычно результат договоренности.
Использовать Kotlin на проекте с Java легче чем ломбок (по моему)
...
Рейтинг: 0 / 0
ServletContextListener.contextInitialized() выполнянется два раза
    #39991410
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
То зачем вытирать попу газеткой (Java), когда есть туалетная бумага (Kotlin)
спасибо за очень важное уточнение, теперь совсем другое дело

mad_nazgul
А так, Kotlin в проекте, это обычно результат договоренности.

вот как? не знал.

mad_nazgul
Использовать Kotlin на проекте с Java легче чем ломбок (по моему)

понятно
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / ServletContextListener.contextInitialized() выполнянется два раза
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]