|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
[quote=Zzz79] [quote=mad_nazgul] ИМХО lombok не особо нужен. Как минимум в IDEA и Eclipse можно создавать getter/setter и пр. через автогенерацию. Вместо lombok можно взять Kotlin. ;-) У lombok есть сайдэфекты, при работе со Spring [ [spoiler] url= ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2020, 16:37 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Ломбок - это скотч которым сбоку к проекту что-то "примотали". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2020, 18:10 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Кстати предлагаю Джону Смиту вместо ответа на вопрос порассуждать чем POJO объекты отличаются от всех остальных. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2020, 20:13 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Zzz79 mayton Кстати предлагаю Джону Смиту вместо ответа на вопрос порассуждать чем POJO объекты отличаются от всех остальных. первым делом джон бы спросил,майтон - ты против договоренностей и раз так обьясни что такое POJO в твоем понимании) Ты хочешь против меня использовать приёмы риторики. Не надо этого делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2020, 20:58 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Zzz79 mayton Ломбок - это скотч которым сбоку к проекту что-то "примотали". нифига ты не прав) я думаю ты же понимаешь что такое ломбок в реальностти) скомпилированый код выглядит так же ,как еслм бы ты нагадил там в ручную гет/сет + прочая лажа так зачем нам в исходниках вся эта чулочная фабрикпс.олды как бы вы не сопротивлялись ломбок уже на проде крупнейших банков)я могу сказать что есть он в ГПБ и Сбере,Альфе и херовой тонне их партнеров) тоесть можно сколько угодно пукать в воздух - но бут ,ломбок и ОРМ уже тут и давно тут) хотите по другому- вам на кворк) Зачем мне бинарник. Я после того как отдал его кастомеру - просто забываю о нем. Мне исходный код важен. Я с ним работаю. И я плачу своим личным временем за все технические долги. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2020, 21:21 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Вот поэтому я и не люблю бины. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2020, 22:25 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Zzz79 Ну и чем тебя не устраивает исходник с ломбоком?ты же знаешь что там будет таже портянка С ломбоком, проблема в том, что он работает во время компиляции. Поэтому рефлексия может работать странно. Плюс начиная с 11 версии вообще рефлексия была поломана. Так что как себя ведет ломбок на версиях джавы выше 11 не понятно. И как бы особого удобства ломбок не приносит. Иногда на сложных многомодульных проектах у ИДЕЯ от ломбока может "сносить крышу". Плюс плагин для ломобока иногда не поспевает за EAP IDEA. Если говорить об удобствах, то имеет смысл как альтернативу ломбок посмотреть на Котлин. Data Class + лямбда apply решают все кейсы ломбока, при этом сам Котлин дает кучу "плюшек". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2020, 06:50 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
mad_nazgul С ломбоком, проблема в том, что он работает во время компиляции. Поэтому рефлексия может работать странно. Плюс начиная с 11 версии вообще рефлексия была поломана. Так что как себя ведет ломбок на версиях джавы выше 11 не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2020, 09:28 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Андрей Панфилов Чет боюсь рефлексия относится к lombok таким же образом как и спринг к особенностям конкретного сериализатора, т.е. никак. В ссылке, которой я давал, как раз разбирается кейс, когда Spring ведет себя странно из-за рефлексии и ломбока. Ломбок работает, не так однозначно, как хотелось бы. Точно так же как и Spring. А уж когда их "скрещивают", может быть все что угодно. :-) Это, кстати, касается и Kotlin. По началу Spring работал с Kotlin очень странно. Сейчас нормально. Может быть с ломбоком, сейчас проблем в Spring нет. Я сейчас не использую ломбок, т.к. использую Kotlin. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2020, 07:39 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
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 себе в проекты импортируют, как итог при смене версии бута еще и байткод начинает другой генерироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2020, 10:19 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Вот об этом и речь. Нафига использовать ломбок, если он не облегчает жизнь а усложняет. Нужно уметь его готовить чтобы использовать. При этом PROFIT'а от него 0. Все что он может делается в IDE, без каких либо проблем. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2020, 15:36 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
mad_nazgul Нафига использовать ломбок, если он не облегчает жизнь а усложняет. с фига ли он не облегчает? еще как облегчает mad_nazgul Нужно уметь его готовить чтобы использовать что там уметь? просто знать что он генерит? mad_nazgul При этом PROFIT'а от него 0 профит есть - меньше бессмысленного кода, отвлекающего от сути. mad_nazgul Все что он может делается в IDE, без каких либо проблем. проблемы есть - нужны плагины (для того же builder, fluent, etc) и в итоге снова тонны бессмысленного кода ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2020, 16:01 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Билдер не имеет мотивации к использованию в языках программирования где нет конструктора или он необязателен но тем не менее вы можете спокойно инициализировать все поля. И хотя контракт билдера может быть чуть сложнее чем просто инициализация полей - тем не менее. Я думаю что в этих языках вы билдера просто не найдете. Поэтому не стал бы идеализировать билдер или выделять его в какую-то особу категорию. IDE позволяет поставить плагин которые печет билдеры как печенюшки? Позволяет. Так-же как мы поступаем с toString, hashCode, equals. Мы на 99% доверяем IDE процесс кодо-генерации и лишь слегка делаем измеенения там где нас что-то не устроило. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2020, 16:10 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
mayton Билдер не имеет мотивации к использованию в языках программирования где нет конструктора или он необязателен но тем не менее вы можете спокойно инициализировать все поля. И хотя контракт билдера может быть чуть сложнее чем просто инициализация полей - тем не менее. Я думаю что в этих языках вы билдера просто не найдете. Поэтому не стал бы идеализировать билдер или выделять его в какую-то особу категорию. [закатывает глаза], 3 абзаца текста... в каком месте я его идеализирую и выделяю в особую категорию ? Это был просто пример конструкции, требующей массы довольно тривиального кода. Один из. mayton IDE позволяет поставить плагин которые печет билдеры как печенюшки? Позволяет. Так-же как мы поступаем с toString, hashCode, equals. Мы на 99% доверяем IDE процесс кодо-генерации и лишь слегка делаем измеенения там где нас что-то не устроило. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2020, 17:10 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
chpasha, да ладно не переживай так. Я просто забыл добавить что это грёбаное IMHO. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2020, 17:23 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
mad_nazgul Вот об этом и речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2020, 18:14 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Zzz79 не понимаю противников ломбока ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 01:45 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Андрей Панфилов mad_nazgul Вот об этом и речь. Я не утверждал, что ломбок ломает все и вся. Я говорил, что при использовании ломбок могут возникнуть проблемы. И что решение проблем не стоит того PROFIT, который дает ломбок. Вы же подвердили мои слова, сказав, что ломбок надо уметь готовить. Возникает вопрос - "Зачем?" Зачем уметь готовить ломбок, когда можно его не использовать? Все что "умеет" ломбок, делает кодогенерация в IDE. При этом никаких побочных эффектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 06:18 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
mad_nazgul Я говорил, что при использовании ломбок могут возникнуть проблемы. проблемы могут возникнуть в любой момент с чем угодно. например с кривыми руками mad_nazgul Вы же подвердили мои слова, сказав, что ломбок надо уметь готовить. вообще-то он написал совершенно противоположное. a готовить таки надо уметь то, у чего проблемы могут возникнуть и без ломбока. mad_nazgul И что решение проблем не стоит того PROFIT, который дает ломбок. стоит, т.к. профит в плане удаления boilerplate в разы больше по сравнению с введением в язык лямбд, var и stream-ов вместе взятых. mad_nazgul Возникает вопрос - "Зачем?" мы, по-моему, ходим кругами. mad_nazgul Все что "умеет" ломбок ломбок умеет больше mad_nazgul кодогенерация в IDE. кодогенерация бесполезного кода (тут прозвучала цифра 99% с которой я согласен) в исходник идет в задницу ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 09:47 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
mad_nazgul Все что "умеет" ломбок, делает кодогенерация в IDE. При этом никаких побочных эффектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2020, 15:27 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
chpasha кодогенерация бесполезного кода (тут прозвучала цифра 99% с которой я согласен) в исходник идет в задницу Так зачем использовать Java, когда можно использовать Kotlin, где эта кодогенерация в принципе не нужна? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 07:28 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
Андрей Панфилов mad_nazgul Все что "умеет" ломбок, делает кодогенерация в IDE. При этом никаких побочных эффектов. Хороший аргумент. Просто я данную проблему обычно решаю через codestyle и ревью кода. Но если для вас, это преимущество является решающим, то да. Для вас ломбок удобная вещь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 07:35 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
mad_nazgul Так зачем использовать Java, когда можно использовать Kotlin, где эта кодогенерация в принципе не нужна? заранее прошу прощения за аналогию: а зачем вытирать попу бумажкой, если есть биде ;) ? Нет возможности пользоваться котлин, по-крайней мере на ява-проектах. Да и на андроид-проектах - переписывать, то что есть, смысла нет, мешать в кучу - будет бардак. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 09:36 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
chpasha mad_nazgul Так зачем использовать Java, когда можно использовать Kotlin, где эта кодогенерация в принципе не нужна? заранее прошу прощения за аналогию: а зачем вытирать попу бумажкой, если есть биде ;) ? Нет возможности пользоваться котлин, по-крайней мере на ява-проектах. Да и на андроид-проектах - переписывать, то что есть, смысла нет, мешать в кучу - будет бардак. ИМХО аналогия не точная. Биде это скорее Scala, а не Kotlin. Если продолжать "сортирную" аналогию. То зачем вытирать попу газеткой (Java), когда есть туалетная бумага (Kotlin) <:o) А так, Kotlin в проекте, это обычно результат договоренности. Использовать Kotlin на проекте с Java легче чем ломбок (по моему) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 13:06 |
|
ServletContextListener.contextInitialized() выполнянется два раза
|
|||
---|---|---|---|
#18+
mad_nazgul То зачем вытирать попу газеткой (Java), когда есть туалетная бумага (Kotlin) mad_nazgul А так, Kotlin в проекте, это обычно результат договоренности. вот как? не знал. mad_nazgul Использовать Kotlin на проекте с Java легче чем ломбок (по моему) понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 13:25 |
|
|
start [/forum/topic.php?fid=59&msg=39990439&tid=2120666]: |
0ms |
get settings: |
21ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
480ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 592ms |
0 / 0 |