diff --git a/docs/asciidoc/dependency-injection.adoc b/docs/asciidoc/dependency-injection.adoc
index 7191150493..93b3f01ae0 100644
--- a/docs/asciidoc/dependency-injection.adoc
+++ b/docs/asciidoc/dependency-injection.adoc
@@ -1,5 +1,7 @@
== Dependency Injection
+include::di-avaje.adoc[]
+
include::di-dagger.adoc[]
include::modules/guice.adoc[]
diff --git a/docs/asciidoc/di-avaje.adoc b/docs/asciidoc/di-avaje.adoc
new file mode 100644
index 0000000000..24823604b5
--- /dev/null
+++ b/docs/asciidoc/di-avaje.adoc
@@ -0,0 +1,136 @@
+=== Avaje Inject
+
+1) Add Avaje Inject to your project
+
+[dependency, groupId="io.avaje", artifactId="avaje-inject", version="9.8"]
+.
+
+2) Configure annotation processor
+
+.Maven
+[source, xml, role = "primary"]
+----
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ...
+
+
+
+ io.avaje
+ avaje-inject-generator
+ 9.8
+
+
+
+
+
+
+----
+
+.Gradle
+[source, kotlin, role = "secondary"]
+----
+plugins {
+ id "org.jetbrains.kotlin.kapt" version "1.9.10"
+}
+
+dependencies {
+ kapt 'io.avaje:avaje-inject-generator:9.8'
+}
+----
+
+3) Bootstrap Avaje from application:
+
+.Java
+[source, java, role = "primary"]
+----
+import static io.jooby.Jooby.runApp;
+
+public class App extends Jooby {
+
+ {
+ /** Avaje: */
+ BeanScope beanScope = BeanScope.builder() <1>
+ .build();
+
+ MyService service = beanScope.get(MyService.class); <2>
+
+ get("/", ctx -> {
+ return service.doSomething();
+ });
+ }
+
+ public static void main(String[] args) {
+ runApp(args, App::new);
+ }
+}
+----
+
+.Kotlin
+[source, kotlin, role = "secondary"]
+----
+import io.jooby.kt.runApp
+
+fun main(args: Array) {
+ runApp(args) {
+ val beanScope = BeanScope.builder() <1>
+ .build()
+
+ val service = beanScope.getMyService() <2>
+
+ get("/") {
+ service.doSomething()
+ }
+ }
+}
+----
+
+<1> Bootstrap avaje inject bean container
+<2> Use Avaje provided objects
+
+==== MVC routes
+
+Integration of MVC routes with Avaje is as simple as:
+
+.MVC and Avaje
+[source, java, role = "primary"]
+----
+
+import static io.jooby.Jooby.runApp;
+
+public class App extends Jooby {
+
+ {
+ /** Avaje: */
+ BeanScope beanScope = BeanScope.builder() <1>
+ .build();
+
+ mvc(beanScope.get(MyController.class)); <2>
+ }
+
+ public static void main(String[] args) {
+ runApp(args, App::new);
+ }
+}
+----
+
+.Kotlin
+[source, kotlin, role = "secondary"]
+----
+import io.jooby.kt.runApp
+
+fun main(args: Array) {
+ runApp(args) {
+ val beanScope = BeanScope.builder() <1>
+ .build()
+
+ mvc(beanScope.get(MyController.class)) <2>
+ }
+}
+----
+
+<1> Bootstrap Avaje bean container
+<2> Register MVC route provided by Avaje