Size: a a a

Java/Kotlin Web and more

2020 December 08

Э

Эд in Java/Kotlin Web and more
Я тоже задумывался о надобности Interface -> Impl.
Читал solid. Я так понял, что  имели ввиду, что если есть интерфейс и impl, то правильно поменять impl на другой impl в случае, когда нужно изменить логику в impl. Но по сути никто не парится и меняет сразу код в impl. Если так большинство делает, то зачем эти интерфейсы для сервисов и компонентов реально нужны? К слову, у нас на прошлом проекте все взаимодействия были через методы интерфейсов, жуть
источник

YG

Yury Golikov in Java/Kotlin Web and more
По сути не нужно. Это удобно когда например есть 2 команды или 2 модуля. И на границе есть интерфейс. И по его расположению понятно какому модулю он принадлежит. А реализация уже на другой стороне.
Ещё чтобы не перекомпилировать разные джарники
источник

S

Stanislav in Java/Kotlin Web and more
Всем доброго дня. Прошу разъяснить такой момент, когда я подключаю Hibernate к проекту, мне необходимо содавать конфигурацию (Пример: Configuration configuration = new org.hibernate.cfg.Configuration();) А теперь вопрос, эту конфигурацию я должен указать в мейне?
источник

S

Stanislav in Java/Kotlin Web and more
источник

S

Stanislav in Java/Kotlin Web and more
Вот что происходит когда я пытаюсь инициализировать конфигурацию в мейне, мне кажется я что то не так понял.
источник

V

Vadim in Java/Kotlin Web and more
Интерфейс мы создаём что бы сделать независимым высокоуровневый код от низкоуровневого. Service это слой с бизнес логикой, самый высокоуровневый, выше нет поэтому и интерфейс на него не нужен
источник

S

Stanislav in Java/Kotlin Web and more
Stanislav
Всем доброго дня. Прошу разъяснить такой момент, когда я подключаю Hibernate к проекту, мне необходимо содавать конфигурацию (Пример: Configuration configuration = new org.hibernate.cfg.Configuration();) А теперь вопрос, эту конфигурацию я должен указать в мейне?
Я нашел ответ
источник

S

Stanislav in Java/Kotlin Web and more
источник

ЮЮ

Юрий Юрий in Java/Kotlin Web and more
Привет.
Подскажите как для Jackson пометить что некоторые поля опциональны(или все если на уровне класса есть такая анотация)
источник

Э

Эд in Java/Kotlin Web and more
Юрий Юрий
Привет.
Подскажите как для Jackson пометить что некоторые поля опциональны(или все если на уровне класса есть такая анотация)
при десериализации?
источник

МС

Михаил Соловей... in Java/Kotlin Web and more
Юрий Юрий
Привет.
Подскажите как для Jackson пометить что некоторые поля опциональны(или все если на уровне класса есть такая анотация)
@JsonInclude(JsonInclude.Include.NON_NULL)
например вот так. тогда будет отдавать только не пустые филды
на уровне класса как раз
источник

BK

Bohdan Kononchuk in Java/Kotlin Web and more
Всем привет,
Объясните пожалуйста, как работает jpa.

Вот у меня есть категория, и она содержат лист с айтемов.
Я просетую тем айтемам свою категорию, и сохраняю через saveAll.

Вопрос:
Если я верну ту категорию, которой сетаю те тот лист айтемв которые сохранил, то не будет ли конфилктов в методе где я возвращаюсь свою категорию и потом делаю categoryRepo.save (categoryWithSaveditems)

Если айтем НЕ вставлять в возвращаемую категорию, и так отдельно сохранить лист айтемов, а в следующем шаге категорию - то все четко
источник

AE

Alexandr Emelyanov in Java/Kotlin Web and more
Yury Golikov
А зачем?
разделение ответственности, разные имплементации, как по профилю. так и одновременно
источник

AE

Alexandr Emelyanov in Java/Kotlin Web and more
Эд
Я тоже задумывался о надобности Interface -> Impl.
Читал solid. Я так понял, что  имели ввиду, что если есть интерфейс и impl, то правильно поменять impl на другой impl в случае, когда нужно изменить логику в impl. Но по сути никто не парится и меняет сразу код в impl. Если так большинство делает, то зачем эти интерфейсы для сервисов и компонентов реально нужны? К слову, у нас на прошлом проекте все взаимодействия были через методы интерфейсов, жуть
impl - плохая практика, так же как и I в названии интерфейса
принято делать SomeServcie и имплементацию как <implementation characteristic>SomeService, если имплементация одна и она базовая - то характеристика это Common или Generic
источник

RS

Ruslan Stelmachenko in Java/Kotlin Web and more
разделение ответственности между чем и чем?
интерфейсы - это не про разделение ответственности, а про сокрытие и замену имплементации
источник

RS

Ruslan Stelmachenko in Java/Kotlin Web and more
ну и про контракт
источник

AE

Alexandr Emelyanov in Java/Kotlin Web and more
Ruslan Stelmachenko
разделение ответственности между чем и чем?
интерфейсы - это не про разделение ответственности, а про сокрытие и замену имплементации
разделение функциональности по интерфейсам, сервис в итоге может реализовывать несколько
источник

AE

Alexandr Emelyanov in Java/Kotlin Web and more
при этом сервис не станет god class, а интерфейс может оказаться перегруженным
источник

BA

Bohdan Antonenko in Java/Kotlin Web and more
Alexandr Emelyanov
Ок, параллельно со спором "мало топиков и много типов сообщений в топике" vs "топик на так сообщения" есть ещё "определенные сообщения в определенные топики vs топик на сервис", рассмотрим его

В обоих случаях есть плюсы и минусы, для первого плюс - за сообщением закреплены топики (обычно один), ты просто в него шлёшь и все, но возникает проблема (минус) - всем ли потребителям нужны все сообщения этого типа?

Для второго типа картина другая, если сообщение попало в топик, значит оно нужно клиенту, это плюс - ведь не надо решать сервису оно нужно или нет, просто станет и обрабатывает, но есть и минус - отправитель должен решить кому нужно это уведомление. Для решения этой проблемы есть паттерн ESB(enterprise service bus), это координатор, ты ему все сообщения сваливаешь в топик и он уже решает кому в какой топик их послать. Минус тут в том, что логику кому нужно сообщение все равно писать, только в ESB, обычно для этого делают систему адресации, дополняют сообщения метаинформацией и т.д.

Как по мне все таки первый вариант проще и лучше, пусть сообщения определенных типов летят в определенные топики, пусть сервисы читают интересующие их топики, к тому же случай, когда сервису нужны не все сообщения типа бывает очень редко и сервис способен самостоятельно решить все. Городить адресацию с ESB не легко и требуется это в очень ограниченном количестве случаев, например при взаимодействии уже между системами, а не сервисами внутри системы
Благодарю за развернутый ответ)
источник

YG

Yury Golikov in Java/Kotlin Web and more
Alexandr Emelyanov
разделение функциональности по интерфейсам, сервис в итоге может реализовывать несколько
Это про ISP. Очень редко видел, чтобы кто то это юзал в внтырпрайз коде. + обычно это уже не называется SomeService.

И я предпочитаю обычно делить код на модули под каждый интерфейс, вместо большой кучки. В основном ISP нужен в библиотечном коде
источник