Size: a a a

Java Web and more

2020 August 13

SM

Sergey Moldachev in Java Web and more
Александр Мартынцев
Нет. У меня обертка к внешниему сервису, связь с которым через сокет. Все рест-запросы обращаются к нему. Если нет соединения то надо возвращать код ошибки. Писать везде и всюду проверку - ну очень не красиво...
Думаю вам могут помочь аспекты: https://habr.com/ru/post/428548/
источник

АМ

Александр Мартынцев... in Java Web and more
Опять не так меня поняли) Не хочется писать в каждом вызове if (!service.isAuth()) throw new ResponseException(....) тем более что проверки могут быть разные. Да, я могу их вынести в какой-нибудь хелпер класс, но все таки раз уж спринг весь такой гибкий, то хочется просто аннотировать метод указав класс валидатора и код ошибки при не выполнении условия
источник

АМ

Александр Мартынцев... in Java Web and more
Sergey Moldachev
Думаю вам могут помочь аспекты: https://habr.com/ru/post/428548/
Спасибо, похоже то что надо
источник

АМ

Александр Мартынцев... in Java Web and more
Осталось мозг об статью не сломать)
источник

VE

Vladislav Estryn in Java Web and more
Можно свою аннотацию ещё как вариант сделать
источник

A

Anton in Java Web and more
Александр Мартынцев
Опять не так меня поняли) Не хочется писать в каждом вызове if (!service.isAuth()) throw new ResponseException(....) тем более что проверки могут быть разные. Да, я могу их вынести в какой-нибудь хелпер класс, но все таки раз уж спринг весь такой гибкий, то хочется просто аннотировать метод указав класс валидатора и код ошибки при не выполнении условия
Есть смысл погуглить
Spring third-party services integration

Первая в выдаче статья про OpenFeign похожа на решение задач вроде ваших:
https://medium.com/@darguelles.rojas91/integration-with-third-party-services-how-to-scale-fast-and-reliable-60e029eb06fc
источник

АМ

Александр Мартынцев... in Java Web and more
Спасибо!
источник

RS

Ruslan Stelmachenko in Java Web and more
Александр Мартынцев
Нет. У меня обертка к внешниему сервису, связь с которым через сокет. Все рест-запросы обращаются к нему. Если нет соединения то надо возвращать код ошибки. Писать везде и всюду проверку - ну очень не красиво...
в тот момент, когда вы попытаетесь что-то послать в 3rd party сервис, который не рабочий, вылетит какой-нибудь эксепшен, верно? вот его можно перехватить в @ExceptionHandler и выдать любой ответ, какой нравится.

а чтобы ограничить кол-во раз, которые запрос доходит аж до вызова 3rd party сервиса, пока он не работает, существует паттерн circuit breaker.
источник

VD

Viktor Dvorak in Java Web and more
Arthur
#offtopic, #spring_security ребят, доброго вечера или ночи, прощу прощения если не по адресу, но думаю в энтерпрайзе всегда найдется такое, что: имеется велосипед авторизации и аутентификации на Spring AOP, версии типа 2.1.1, где на каждый чих приходится ходить в БД оракл, от Security модуля используется ровно ничего, от самого Spring’а используются разве что возможности IoC контейнера, и даже не ввиде стартера, а как отдельная либа в локальном репозитории, где в каждом проекте по «конвенции» приходится выкачивать «руками» тысячу зависимостей и наследоваться от определённого класса, дабы всякие аспекты смогли сходить в бд. Хотел бы предложить тех. диру попробовать security модуль и oauth2 фичи, но ввиду того, что собственный опыт не позволяет переплюнуть наработки текущего сеньора велосипедиста, не знаю как объяснить плюсы нативных решений от спринга, может кто поможет состряпать объяснения, почему AOP прокси поверх прокси методов с блокирующим потоком это не очень, ну и в целом возможно само архитектурное решение ИМХО не очень? Спасибо.
источник

AE

Alexandr Emelyanov in Java Web and more
Александр Мартынцев
Опять не так меня поняли) Не хочется писать в каждом вызове if (!service.isAuth()) throw new ResponseException(....) тем более что проверки могут быть разные. Да, я могу их вынести в какой-нибудь хелпер класс, но все таки раз уж спринг весь такой гибкий, то хочется просто аннотировать метод указав класс валидатора и код ошибки при не выполнении условия
так сервсис при вызове кинет исключение, потом обрабатываешь в @ControllerAdvice и отдаешь нужный код ошибки. это будет куда более правильно, чем то что ты городишь
источник

AE

Alexandr Emelyanov in Java Web and more
Sergey Moldachev
Думаю вам могут помочь аспекты: https://habr.com/ru/post/428548/
из пушки по воробьям, вообще какой то оверинженеринг
источник

AE

Alexandr Emelyanov in Java Web and more
Ruslan Stelmachenko
в тот момент, когда вы попытаетесь что-то послать в 3rd party сервис, который не рабочий, вылетит какой-нибудь эксепшен, верно? вот его можно перехватить в @ExceptionHandler и выдать любой ответ, какой нравится.

а чтобы ограничить кол-во раз, которые запрос доходит аж до вызова 3rd party сервиса, пока он не работает, существует паттерн circuit breaker.
+
источник

SM

Sergey Moldachev in Java Web and more
Alexandr Emelyanov
из пушки по воробьям, вообще какой то оверинженеринг
Ну какая постановка вопроса, такое и предложение 🙂 Там было про то, что человек не хочет писать много проверок в разных местах, а выносить в какой-то статический метод не хотел 🙂 Я лишь предложил красиво решить именно эту проблему. А так конечно нужно через @ControllerAdvice обрабатывать конкретные ошибки и преобразовывать в то, что нужно 🙂
источник

АМ

Александр Мартынцев... in Java Web and more
На самом деле все ответы полезны, спасибо всем
источник

АМ

Александр Мартынцев... in Java Web and more
И аспекты покурить - такого треша я давно не видел, и разные варианты попробовать
источник

АМ

Александр Мартынцев... in Java Web and more
я не хотел использовать вариант с эксепшенами потому, что они дают большой оверхед. медленные они...
источник

AE

Alexandr Emelyanov in Java Web and more
Александр Мартынцев
На самом деле все ответы полезны, спасибо всем
ранняя проверка будет чревата тем, что проверили - работает, пока дошли до непосредственного вызова, сервис лежит, вылетает исключение
источник

AE

Alexandr Emelyanov in Java Web and more
Александр Мартынцев
я не хотел использовать вариант с эксепшенами потому, что они дают большой оверхед. медленные они...
источник

AE

Alexandr Emelyanov in Java Web and more
Александр Мартынцев
я не хотел использовать вариант с эксепшенами потому, что они дают большой оверхед. медленные они...
джун?
источник

RS

Ruslan Stelmachenko in Java Web and more
Александр Мартынцев
я не хотел использовать вариант с эксепшенами потому, что они дают большой оверхед. медленные они...
такое я давно не слышал. )
по сравнению с оверхедом, который дает спринг (по сравнению с чистыми сервлетами, например) и все остальные компоненты, участвующие в обработке запроса, эксепшены - это капля в море
источник