|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
mayton, Да. Бардак пока с идеологией. Ведь тема про что? ПЕРЕБОР АННОТАЦИЙ СПРИНГА ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 13:27 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Nixic Хех, ну да вариантов много. В общем выложу код, переименую класс, чтоб не палиться :) Задача такая - не давать стартовать сервису, если не доступна БД. Этот вопрос - вообще не имеет отношения к Спрингу. Моя мысль такова - "Show must go on!" Спринг должен стартовать в любом случае. Есть база или нет. Пул должен перейти в некое закрытое состояние. И какое-то время (минуту или больше) давать мнговенный код ошибки на любую попытку получить коннекшек к БД. Здесь в помошь шаблон - аварийный размыкатель - Cirquit Breaker для предотвращения долбёжки или висячих сокетов в направлении дохлой базы. https://spring.io/guides/gs/circuit-breaker/ Моя идея станет более понятна если представить что База это просто очередной ресурс которых сотни подключенных к приложению и гарантировать все-все из них поднятыми очень проблемно. Полюбому кто-то будет отваливаться и падать. Теория надёжности как-бе говорит нам. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 13:33 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp SpringMan, Аннотация это конфигурирование на сегодняшний день. Или декларативное программирование. Поэтому фраза: "не надо аннотаций но надо конфигурации" вообще запутывает честного программиста. А я говорил еще шире - какого рожна спринг лезет в базу. Хоть и скриптами? Аннотации это часть java языка, конфигурация spring.datasource.continue-on-error - это запись в properties/yaml файлике. Вроде ничего путанного нет. Спринг может лезть в базу, а может и не лезть. Кто хочет, чтобы лез, тот это настроит. Наличие возможности, даже такой, лучше, чем ее отсутствие PetroNotC Sharp mayton, Да. Бардак пока с идеологией. Ведь тема про что? ПЕРЕБОР АННОТАЦИЙ СПРИНГА Вот то, что мы полдня обсуждаем, это не относится к проблеме ТС-а. У него одна проблема - предшественник до него написал одну лишнюю аннотацию, которая не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 13:45 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Увы. Таково течение коллективного разума. Он не всегда обсуждает то что надо автору. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 13:47 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
SpringMan, Да. Конечно. Мы обсуждаем фразу - название темы. Буквально. "Спринг много на себя берет". (с) авторНаличие возможности, даже такой, лучше, чем ее отсутствие В архитектуре эта фраза антипаттерн. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 13:56 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
SpringMan, авторВроде ничего путанного нет. Спринг может лезть в базу, а может и не лезть. Кто хочет, чтобы лез, тот это настроит.скажи назначение приватных полей. Пусть кто хочет лезет, кто хочет не лезет ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 14:01 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Да, это очень похоже на антипаттерн. Но тут недавное по-моему asv79 с проблемой бегал. Надо обновить базу, доступа до нее нет, и фиг знает у кого он есть. Есть два пути: 1) Писать каждый раз кучу писем с кучей согласований, чтобы взяли твой скрипт и прогнали фиг знает кто, фиг знает когда и фиг знает какой результат у него будет 2) Встроить это в приложение, которое ты можешь обновлять куда быстрее Первый способ конечно правильнее, но через какое-то время можно выбрать второй, как путь с меньшим сопротивлением PetroNotC Sharp SpringMan, авторВроде ничего путанного нет. Спринг может лезть в базу, а может и не лезть. Кто хочет, чтобы лез, тот это настроит. Пусть кто хочет лезет, кто хочет не лезет Имхо сравнение не совсем корректно. Спринг/приложение уже знает как попасть в базу. Если оно будет выполнять скрипты никакой дополнительной приватности не нарушается ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 14:10 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
SpringMan, Откуда оно что знает? У меня в бд имеет доступ jndi или пул. Но спринг оказывается что то там знает.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 14:21 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
https://www.codeflow.site/ru/article/spring-persistence-jpa-jndi-datasource Тут вроде спринг никуда не лезет и спокойно уступает место JNDI, JPA, HIBER.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 14:27 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, А больше ничего и не надо. Через jndi/pool можно точно также вызвать нужный скрипт, как и в спринговом приложении. И тот же спринг можно так же натравливать на jndi) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2020, 14:31 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Nixic Хех, ну да вариантов много. В общем выложу код, переименую класс, чтоб не палиться :) Задача такая - не давать стартовать сервису, если не доступна БД. Да, меня именно эта связка аннотаций смутила: @Bean @PostConstruct а инжект Environment'а - фиг с ним :) Не истины ради, а флейма для. Проверка, на существование БД. Если нету БД, то приложение падает. (Для Spring Boot, на Kotlin) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
В принципе в бин можно добавить проверки, даже если есть соединение. Главное Exception выкинуть. В данном случае exception кидает "dataSource.connection" ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 07:56 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
а, вы про чистый Спринг. Там не проверял. Но в Spring Boot 100% если база не доступна, приложение не стартанёт. А какой у вас юскейс? Зачем хотите чтобы падало если базы нет? База не всегда доступна (если сеть упала или базу перезагрузили). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 09:42 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Zzz79, Чем плохо декларативное программирование? Тем что ты становишься конфигурастом а не программистом. Спринг это же клей. Вот ты и клеишь программу. Поэтому ты не знаешь что такое FK и оператор new object. Что такое наследование и композиция. .... Поэтому почему то становится проблемой "огромные куски дубляжа". Проблема не раскрыта. Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:00 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
У декларативности есть дефект. Она - ничего нем не говорит о порядке исполнения операций. Конешно полагаясь на хронологический порядок аннотаций мы можем предполагать что процессор аннотаций обработает их именно так. Но что делать когда этих процессоров несколько. Lombok и Spring (примеру) умеют читать свой домен аннотаций. Но если возникает вопрос "кто первый процессит" - то здесь декларативное программирование даёт сбой. Оно (декларативное) - не знает кто первый. Нет у него такой опции как ранг аннотаций или ранг процессинга. Тоже самое про maven. Maven - делкаративен. Но нам чисто по человечески иногда важно чтобы в фазе билда работал сначала этот плагин а потом этот. Хотя они декларированы как одно-ранговые. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:04 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
mayton чисто по человечески иногда важно чтобы в фазе билда работал сначала этот плагин а потом этот. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:15 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
mayton, Да можно и порядок и приоритет в принципе закодить. Но препроцессинг ведь. Заменяем код своими значками @мойСуперКлючикСтрокаЗначок(.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:17 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
chpasha, Ты тоже прав. Нужно в меру. Нужно чтобы спринг знал меру)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:20 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Ну... яб сказал что самый первый вопрос которым должны мордовать и мучать бедного джуна на техническом ревью - это Spring и жизненный цикл бина. Про что это? Это именно про порядок инициализации заинжекченых полей и пропертей и пост-конструкторов и прочего декралативного дерьма. Порядок сцуко - важен. На порядке инициализации 80% багов прилетает. Особенно хреново когда есть race-conditions. И мультипоточка. И какие-то бл%дские статические поля переменных. Там - вобще конь не валялся. И как всегда на тестах хорошо а в продуктиве - падает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:20 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Да можно и порядок и приоритет в принципе закодить. Но препроцессинг ведь. Заменяем код своими значками @мойСуперКлючикСтрокаЗначок(.... Это - еще хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:21 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Проблема не в аннотациях, что вы к ним привязались? Очевидный факт упускаете, что проблема в том что реализация этих аннотаций не видна программисту, т.к. она делается на этапе инициализации контекста и создания проки классов. Это - основная проблема. Т.к. документация не всегда понятна и полна в Спринге. Да и всегда удобно код почитать. А тут - не получится. Вот за это я оч. уважаю AST аннотации\трансформации - т.к. там можно подебажить и посмотреть что конкретно происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 21:38 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Ломбок это пародия на Груви. А так я привык читать код библиотек которые использую. Но в случае со Спрингом уже тоже свыкся... Хотя давно могли также Intellij добавить поддержку просмотра gclib обработчиков аннотаций из кода приложения ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 22:45 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Тут другое интересно. Насколько я помню, при разработке джавы один из лозунгов был что то вроде "как написано, так и работает". Под эту лавочку туда не стали добавлять плюсовые макросы, которые могут превратить код в адок. И даже псевдонимы типов не сделали... А потом взяли и добавили рефлексию, аннотации, джава-агенты. В итоге получили тот же самый адок, только в профиль, и теперь все соревнуются, кто больше аннотаций изобретет и понавешает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 08:03 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Но самый перебор, это конечно не аннотации. Самый перебор - это когда поведение зависит от наличия той или иной зависимости без какой либо явной конфигурации. Вот где абсолютное зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 08:09 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
Ржавый гвоздь Тут другое интересно. Насколько я помню, при разработке джавы один из лозунгов был что то вроде "как написано, так и работает". Под эту лавочку туда не стали добавлять плюсовые макросы, которые могут превратить код в адок. И даже псевдонимы типов не сделали... А потом взяли и добавили рефлексию, аннотации, джава-агенты. В итоге получили тот же самый адок, только в профиль, и теперь все соревнуются, кто больше аннотаций изобретет и понавешает. Типа рефлексия это плохо?:) А как вы без неё сделаете модульное приложение расширяемое? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 09:12 |
|
Аннотации спринга, по-моему перебор, не? :)
|
|||
---|---|---|---|
#18+
dakeiras Типа рефлексия это плохо?:) А как вы без неё сделаете модульное приложение расширяемое? Не всегда и не везде плохо. Но когда ее используют и где надо и где не надо - от нее больше вреда, чем пользы. Засилие аннотаций - типичный вредный пример, а какой нибудь сериализатор - вполне хороший. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 09:19 |
|
|
start [/forum/topic.php?fid=59&msg=39958583&tid=2120799]: |
0ms |
get settings: |
7ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
36ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
398ms |
get tp. blocked users: |
0ms |
others: | 4ms |
total: | 456ms |
0 / 0 |