Pull to refresh

Comments 5

Собственно, нам показали как загрузить сервис без зависимостей.


А зависимости-то как инжектить?

Похоже на сравнение теплого с мягким, даже немного неполное. То, что про ServiceLoader могли не знать — конечно зря, но вот мне это не помогло, это не замена Spring для более-менее навороченного приложения

С таким же успехом можно использовать Map<Class, Supplier>. ServiceLoader служит для поиска имплементации сервиса в classpath. Кроме того, в Java 9 это также стандартный способ для связи между модулями. В сравнении с нормальным DI он не обеспечивает:

  • транзитивные зависимости
  • AOP и проксирование
  • выбор имплементации сервиса

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

Одним из ключевых аспектов Java-модулей была возможность полностью защитить классы в модуле от кода вне модуля.

Есть, правда, один нюанс. При прогоне юнит тестов Intellij IDEA склеивает все модули в один и весь код, который был написан с рассчётом на то, что модулей много, работать не будет.

Sign up to leave a comment.