Компактный runtime-DI для Java: JSR-330, Class-File API и миграция за 2 дня

Когда начинал разработку системы многомерного анализа данных временных рядов Dimension-UI , для внедрения зависимостей в исходном коде решил использовать Dagger 2. Практический опыт показал, что для приложений с большим количеством динамически создаваемых объектов инверсия зависимостей, реализованная в Dagger 2, не подходит. Да, создание графа зависимостей в compile-time — это, во-первых, очень быстро, и, во-вторых, удобно: получаешь сообщения об ошибках конфигурации уже при компиляции. Но накладные расходы на сопровождение всего этого хозяйства – прямо скажем, это боль. Чтобы реализовать scope-зависимости, приходится писать и поддерживать много инфраструктурного кода внутри объектов, куда мы внедряем зависимости. В Dagger 2 такая реализация, во-первых, «загрязняет» код, а во-вторых, серьезно осложняет тестирование. Изолировать методы удобным способом не получается: в тестах нужно писать очень много кода, чтобы прокинуть необходимый контекст и корректно мокировать внешние зависимости. Я туда просто не полез — покрывал unit- и UI-тестами только базовую функциональность, где были Singleton-зависимости. Даже с одними Singleton’ами приходится поднимать отдельную тестовую инфраструктуру для запуска приложения в тестовом режиме. Это не просто неудобно — это очень затратно по времени. Если сравнить усилия, которые надо потратить на реализацию тестирования подобного функционала в Spring и Dagger… Сравнение будет не в пользу Dagger. В целом я начал думать о переходе на runtime-генерацию графа зависимостей.

https://habr.com/ru/articles/962326/

#java #dagger2 #dependency_injection #dependency_inversion #DimensionDI #DimensionUI #spring_ioc #guice #рефакторинг

Компактный runtime-DI для Java: JSR-330, Class-File API и миграция за 2 дня

Когда начинал разработку системы многомерного анализа данных временных рядов Dimension-UI , для внедрения зависимостей в исходном коде решил использовать Dagger 2. Практический опыт показал, что для...

Хабр

Как мы Best Practices в Java анализатор внедряли

История о том, как мы переписывали приложение под DI контейнеры, разбирали зависимости, рисовали графики, чтобы в этом не потеряться, и молились, чтобы ничего вдруг не сломалось.

https://habr.com/ru/companies/pvs-studio/articles/944164/

#java #dependency_injection #guice #software_architecture #clean_code #static_analysis #inversion_of_control

Как мы Best Practices в Java анализатор внедряли

История о том, как мы переписывали приложение под DI контейнеры, разбирали зависимости, рисовали графики, чтобы в этом не потеряться, и молились, чтобы ничего вдруг не сломалось. Предпосылки Первая...

Хабр

Dependency Injection frameworks: reasons to avoid them

https://video.infosec.exchange/w/7GUbFrk5mJDMi4fKuFPXZk

Dependency Injection frameworks: reasons to avoid them

PeerTube

🚨 Breaking: Google Guice has made the switch to jakarta.inject‼

Time to revisit my post about the javax→jakarta mess
https://blog.ltgt.net/javax-jakarta-mess-even-worse/

#java #guice #DependencyInjection

The Javax → Jakarta mess, it's even worse than I thought

tbroyer's pages
Google Guice 101 (2008) with @jessewilson and Bob Lee RIP https://www.youtube.com/watch?v=FFXhXZnmEQM #java #guice
Google I/O 2008 - Google Guice 101

YouTube

😢

> Bob Lee, 43, died after being found stabbed on the 400 block of Main Street in SoMa. Lee was chief product officer of MobileCoin, the former chief technology officer of Square, and the founder of Cash App.

(to me, he was mainly the creator of Guice and instigator of javax.inject, I learned today he was also behind Java lambdas)

#crazybob #BobLee #Guice #Java

https://www.sfgate.com/bayarea/article/mill-valley-man-killed-sf-stabbing-17878809.php

43-year-old Mill Valley man dies after being stabbed in San Francisco

A 43-year-old man from Mill Valley died after being stabbed in San Francisco early Tuesday morning, officials said.

SFGATE

Dependency Injection frameworks: reasons to avoid them

https://diode.zone/videos/watch/e71933b6-e568-4872-9c3d-d0e6a67d2b8f

Dependency Injection frameworks: reasons to avoid them

PeerTube