Перейти к основному содержанию

Обзор

ActiveJ Inject - это легкая и мощная библиотека инъекции зависимостей с высочайшей производительностью и отсутствием сторонних зависимостей. Он многопоточный, многофункциональный и может похвастаться очень быстрым временем запуска и временем работы, значительно превосходя Spring DI или Guice. ActiveJ Inject - это одна из технологий ActiveJ, но она имеет минимум сторонних зависимостей и может использоваться как отдельный компонент.

Почему именно ActiveJ Inject?#

  • Поддерживается конфигурация на основе аннотаций, а также ручное связывание, чтобы избежать накладных расходов на отражение.
  • Связующие элементы группируются в модули, которые могут быть повторно использованы в других приложениях
  • Оптимизированные инжекторы для однопоточного и многопоточного использования
  • Возможность комбинировать, переопределять и преобразовывать привязки
  • Поддержка синглтонов, вложенных диапазонов и переходных привязок
  • Обработка графа зависимостей выполняется один раз при запуске системы
  • Предоставляет средства для интроспекции графа зависимостей
  • Отсутствие зависимостей от сторонних производителей

Инъекция зависимостей: Переопределение#

Наслаждайтесь разработкой с помощью широкого спектра мощных инструментов. ActiveJ Inject упрощает разработку, отладку, рефакторинг и повторное использование вашего кода без ограничений и накладных расходов.

Обработка аннотаций выделена в стандартный плагин, который используется по умолчанию и позволяет генерировать недостающие зависимости. Однако если вам необходимо реализовать сложную бизнес-логику, вы можете либо использовать ActiveJ Inject DSL, либо даже создать собственные плагины обработки аннотаций.

DSL обеспечивает поддержку программной генерации привязок, интроспекции графов зависимостей, преобразований, автоматического создания недостающих привязок и модификации уже существующих привязок. Таким образом, вы можете использовать всю мощь Java для алгоритмического создания сложных графов привязок и зависимостей непосредственно во время выполнения с учетом информации и настроек времени выполнения.

Module cookbook = new AbstractModule() {    @Provides    Sugar sugar() { return new Sugar("Sugar", 10.f); }
    @Provides    Butter butter() { return new Butter("Butter", 20.0f); }
    @Provides    Flour flour() { return new Flour("Flour", 100.0f); }
    @Provides    Pastry pastry(Sugar sugar, Butter butter, Flour flour) {        return new Pastry(sugar, butter, flour);    }
    @Provides    Cookie cookie(Pastry pastry) {        return new Cookie(pastry);    }};Injector.of(cookbook).getInstance(Cookie.class);

Добавьте ActiveJ Inject в свой проект#

Вы можете добавить ActiveJ Inject в свой проект, импортировав его репозиторий Maven. Эта документация охватывает последний выпуск ActiveJ Inject v5.0-beta2 (см. на сайте Github или Maven).