跳到主要内容

概述

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 (见上 GithubMaven)。)