|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
chpasha А ты не пробовал вникать, когда и почему Not recommended? Пробовал и прекрасно знаю почему ,поэтому и ответил в теме этой no way to unit test without reflection or a Spring container-одна из основных наверно причин,почему @Autowired явлеяется признаком плохого кода ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 16:02 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79 Уточните из какой деревни JetBrains ,которые пишут , что @Autowired is not recommended. Стас, тебе нужно срочно натравить на код какой-нить SonarQube и начать нести в массы новые знания того, что тамошние имбецилы не рекомендуют. По сонар кубу я ничего не могу сказать ,ибо я с ним не сталкивался ( видимо и слава богу) ,на одном из мест работы я столкнулся с чем то подобным не помню названия PWD или что то рядом- который на подобии сонара чекал код перед сборкой,а сборка в дженкинсе была настроена так ,что если варны идут - то ничего не собирается- там да до каждого пробела и запятой домогались и надо сказать это порядком надоедало ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 16:15 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
asv79 прекрасно знаю почему ,поэтому и ответил в теме этой что-то не похоже. у нас здесь field injection? у нас здесь есть что-то, что можно протестировать без spring? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 16:15 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
chpasha asv79 прекрасно знаю почему ,поэтому и ответил в теме этой что-то не похоже. у нас здесь field injection? у нас здесь есть что-то, что можно протестировать без spring? а разве нет? мокни репу и делай что хочешь,зачем тут спринг или ты собрался тестить jdbc драйвер? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 16:27 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
asv79 а разве нет? нет - у нас java based spring config здесь и бин, в который при создании нужно заинжектить зависимость из другого конфига ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 16:46 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
asv79 no way to unit test without reflection or a Spring container-одна из основных наверно причин,почему @Autowired явлеяется признаком плохого кода у того, кто писал этот бред, определенно существуют трудности с пониманием происходящего в современной разработке: 1. зависимость от spring - это не плохо и не хорошо, это просто зависимость от spring, писать код исходя из того, что он может в какой-то момент переехать на другой DI - откровенно говоря, так себе затея, при этом @Autowired при таком переезде особых трудностей вызывать не будет - в спринге полно более других выкрутасов, которые поддерживаются только спрингом и нигде больше. Поэтому нужно четко осозновать, что если кто-то начинает ссать в уши что у тебя в проекте зависимость от конкретного DI и это плохо, то перед тобой м*удак. 2. Относительно возможности "собрать бин руками" как таковой: чтобы значь начать дискутировать нужно для начала прояснить несколько вещей: - нужно открыть проект, заглянуть в src/test и посчитать сколько раз там такое делается: чет есть ощущение, что руками зависимости никто уже давно не собирает в виду сложности и бесполезности процесса - осознать, что чтобы убедиться в работоспособности спрингового контекста, его так или иначе придется поднять, а зачем тогда собирать зависимости вручную? 3. DI через поля откровенно лучше чем через сеттеры, по двум причинам: - оно по крайней мере делает вид, что бины не мутируют - оно побуждает писать дальнейший код более правильно (инициализация в @PostConstruct или по событию, а не сразу в сеттере или конструкторе) 4. DI через конструкторы (то как рекомендуют упоротые разработчики JetBrains) - это совершенная дичь, а не рекомендация: если проект хоть капельку сложный, то появление в нем циклических зависимостей - это всего лишь вопрос времени, с циклическими зависимостями принято бороться или глобальным рефакторингом или шлепаньем @Lazy, использование @Lazy несет ряд проблем, самая серьезная заключается в том, что зависимости, помеченные @Lazy разрешаются исключительно в рантайме при попытке к ним обратиться, при этом нет никаких гарантий, что если граф зависимостей разрешился-таки на одном окружении, то он разрешится и на другом итого имеем: - на одной чаше весов прямой код и отсутствие пороховой бочки в виде рантайма, который готов в каждую минуту развалиться - на другой чаше весов какие-то заблуждения 15-летней давности со всеми вытекающими ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 16:57 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
chpasha нет - у нас java based spring config здесь и бин, в который при создании нужно заинжектить зависимость из другого конфига ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 17:01 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
Тема переезда на другие DI - интересная тема. Мы рассматриваем Dagger, как альтернативу Spring для легковесных Servel-Less функций для амазончика. Пытались также рассматривать Guice, Quarkus. Quarkus пока не пошел по причине что никто не компетентен. Все пожимают плечами. Guice на рассмотрении. В данном форуме я-бы для начала поднял голосование на тему того, какие именно фичи являются определяющими в данный момент для фреймворка. Если DI - это Пареттовские 80% желаемых фич - тогда Spring ничем особо не примечателен и можно спокойно брать другие инжекторные двигатели и для нового проекта ничего по сути не меняется, но избавляемся от лишних мегабайт зависимостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 17:09 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
chpasha asv79 а разве нет? нет - у нас java based spring config здесь и бин, в который при создании нужно заинжектить зависимость из другого конфига все это тут не нужно от слова совсем делается это гораздо проще и удобней через @Service->@RequiredArgsConstructor->pr Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
зачем вот это все в видео конфигов каких и бинов руками созданных? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 17:18 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
Андрей Панфилов - на одной чаше весов прямой код и отсутствие пороховой бочки в виде рантайма, который готов в каждую минуту развалиться - на другой чаше весов какие-то заблуждения 15-летней давности со всеми вытекающими @Autowired не дает возможности сделать это поле имутейбл например а вообще вот тут хорошо написано - почему это плохо Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 17:47 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
mayton Тема переезда на другие DI - интересная тема. Мы рассматриваем Dagger, как альтернативу Spring для легковесных Servel-Less функций для амазончика. Пытались также рассматривать Guice, Quarkus. Quarkus пока не пошел по причине что никто не компетентен. Все пожимают плечами. Guice на рассмотрении. В данном форуме я-бы для начала поднял голосование на тему того, какие именно фичи являются определяющими в данный момент для фреймворка. Если DI - это Пареттовские 80% желаемых фич - тогда Spring ничем особо не примечателен и можно спокойно брать другие инжекторные двигатели и для нового проекта ничего по сути не меняется, но избавляемся от лишних мегабайт зависимостей. тут дело не в переезде а в обчном юнит тестировании This means that if you want to use your class outside the application container, for example for unit testing, you are forced to use a Spring container to instantiate your class as there is no other possible way (but reflection) to set the autowired fields. по поводу @Lazy - у нас достаточно сложный проект ( даже близко не энтерпрайз) и нет ни одного класса с @Autowired ,между тем у нас нет ни каких проблем с цикличностью и инициализацией коллекций . ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 17:55 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
asv79 Андрей Панфилов - на одной чаше весов прямой код и отсутствие пороховой бочки в виде рантайма, который готов в каждую минуту развалиться - на другой чаше весов какие-то заблуждения 15-летней давности со всеми вытекающими @Autowired не дает возможности сделать это поле имутейбл например а вообще вот тут хорошо написано - почему это плохо Стас, попробуй своими словами описать, а не приводить цитаты очередного бреда из интернета... там испанский имбецил (чисто к сведению: испанцы еще хуже индусов) пишет примерно следующее: "я когда делаю DI через конструкторы то я начинаю замечать, что код выглядит так себе, потому что у конструкторов много параметров, а при использовании @Autowired я этого не замечаю..." Ну тут ему нужно или посоветовать использовать lombok, чтобы тоже не замечать, или голову-таки включить. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 18:02 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79 пропущено... @Autowired не дает возможности сделать это поле имутейбл например а вообще вот тут хорошо написано - почему это плохо Стас, попробуй своими словами описать, а не приводить цитаты очередного бреда из интернета... там испанский имбецил (чисто к сведению: испанцы еще хуже индусов) пишет примерно следующее: "я когда делаю DI через конструкторы то я начинаю замечать, что код выглядит так себе, потому что у конструкторов много параметров, а при использовании @Autowired я этого не замечаю..." Ну тут ему нужно или посоветовать использовать lombok, чтобы тоже не замечать, или голову-таки включить. ну я с тем что он пишет согласен) кроме того конечно - что с конструктором проще уведеть что ваш класс уже не отвечает SOLID например юнит тестирование- тут сложно поспорить - мы тестируем отдельно взятый класс- зачем мне подымать под это дело спринг? а если этих тестов тысячи?ждать по полгода пока проект соберется в тим сити,который и так тормознутый я лично против @Autowirerd только изза тестирования ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 18:14 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
asv79 @Autowired явлеяется признаком плохого кода asv79 я лично против @Autowirerd только изза тестирования asv79 тим сити,который и так тормознутый Очевидно что ты гонишь. тим сити делает разве что mvn test/verify в зависимости от, у вас тесты просто писать не умеет никто. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 18:51 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79 @Autowired явлеяется признаком плохого кода asv79 я лично против @Autowirerd только изза тестирования asv79 тим сити,который и так тормознутый Очевидно что ты гонишь. тим сити делает разве что mvn test/verify в зависимости от, у вас тесты просто писать не умеет никто. я не гоню) тим сити перед сборкой запускает тесты и если это спринговые тесты( а с автовайред это только они) то это очень долго. Тесты я сам пишу и там нет ничего необычного - разница лишь в контексте ,но спринговые тесты объективно и по понятным причинам гораздо медленней обычного юнит теста что такое обычный юнит тест Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
а со спрингом это выглядит вот так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
эти два теста тестриуют один и тот же функционал( специально переписал под спринг посмотреть) и спринговый тест медленней в разы( насколько не мерял) но и так понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 19:02 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
asv79, т.е. там по десятку зависимостей везде, а ты при этом тут что-то про SOLID рассказываешь? и да, судя по тому что ты привел, тесты действительно писать не умеете. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 19:26 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79, т.е. там по десятку зависимостей везде, а ты при этом тут что-то про SOLID рассказываешь? и да, судя по тому что ты привел, тесты действительно писать не умеете. десятка там нет,всего 6 ) но да ладно и чем тебе сии тесты не угодили?замечу лишь то,что это две интепритации с конструктор инжектинг,филд инжектов у нас нет и руками писать их лень,поэтому провел сравнительный анализ на том ,что было. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 19:40 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
Андрей Панфилов Если обсуждать конкретный код, то там @Autowired не нужен asv79 делается это гораздо проще и удобней через @Service->@RequiredArgsConstructor->pr Понятное дело проще - дурное дело оно ж не хитрое. Но как же SOLID? Объясни мне, зачем классу, которому для работы нужна некая коллекция строк, впендюривать в зависимости целый dao? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 20:24 |
|
Как проинициализировать Bean значениями из БД
|
|||
---|---|---|---|
#18+
chpasha Андрей Панфилов Если обсуждать конкретный код, то там @Autowired не нужен asv79 делается это гораздо проще и удобней через @Service->@RequiredArgsConstructor->pr Понятное дело проще - дурное дело оно ж не хитрое. Но как же SOLID? Объясни мне, зачем классу, которому для работы нужна некая коллекция строк, впендюривать в зависимости целый dao? затем что вы этого хотите?если не устраивает - то это вопрос архитектуры скорей- нужно значит делать какие то слои ,которые работают с дао и выдают вам по требванию нужные коллекции /сингл значения ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2021, 21:39 |
|
|
start [/forum/topic.php?fid=59&msg=40053315&tid=2120505]: |
0ms |
get settings: |
7ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
27ms |
get topic data: |
2ms |
get forum data: |
0ms |
get page messages: |
305ms |
get tp. blocked users: |
0ms |
others: | 9ms |
total: | 357ms |
0 / 0 |