diff --git a/modules/jooby-avaje-inject/pom.xml b/modules/jooby-avaje-inject/pom.xml
index ff8e2db0ae..0a80f46ea2 100644
--- a/modules/jooby-avaje-inject/pom.xml
+++ b/modules/jooby-avaje-inject/pom.xml
@@ -39,8 +39,26 @@
- org.mockito
- mockito-core
+ io.jooby
+ jooby-netty
+ test
+
+
+
+ io.jooby
+ jooby-test
+ test
+
+
+
+ io.jooby
+ jooby-jackson
+ test
+
+
+
+ com.squareup.okhttp3
+ okhttp
test
@@ -51,4 +69,34 @@
test
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ test
+ test-compile
+
+
+
+
+ -parameters
+
+
+
+ io.jooby
+ jooby-apt
+
+
+ io.avaje
+ avaje-inject-generator
+
+
+
+
+
+
diff --git a/modules/jooby-avaje-inject/src/main/java/io/jooby/avaje/inject/AvajeInjectModule.java b/modules/jooby-avaje-inject/src/main/java/io/jooby/avaje/inject/AvajeInjectModule.java
index 7ac6f62a3f..d495c959fa 100644
--- a/modules/jooby-avaje-inject/src/main/java/io/jooby/avaje/inject/AvajeInjectModule.java
+++ b/modules/jooby-avaje-inject/src/main/java/io/jooby/avaje/inject/AvajeInjectModule.java
@@ -8,8 +8,6 @@
import java.util.List;
import java.util.stream.Collectors;
-import com.typesafe.config.Config;
-
import io.avaje.inject.BeanScope;
import io.avaje.inject.BeanScopeBuilder;
import io.jooby.Extension;
@@ -68,7 +66,7 @@ public void install(Jooby application) throws Exception {
e -> {
final var key = e.getKey();
if (key.getName() == null) {
- beanScope.provideDefault(key.getType(), e::getValue);
+ beanScope.provideDefault(key.getType(), e.getValue()::get);
} else {
beanScope.bean(key.getName(), key.getType(), e.getValue());
}
@@ -80,7 +78,6 @@ public void install(Jooby application) throws Exception {
// configuration properties
final var config = environment.getConfig();
beanScope.propertyPlugin(new JoobyPropertyPlugin(config));
- beanScope.bean(Config.class, config);
for (var entry : config.entrySet()) {
String name = entry.getKey();
diff --git a/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/AvajeInjectModuleTest.java b/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/AvajeInjectModuleTest.java
new file mode 100644
index 0000000000..aeb91e150e
--- /dev/null
+++ b/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/AvajeInjectModuleTest.java
@@ -0,0 +1,25 @@
+package io.jooby.avaje.inject;
+
+import io.jooby.avaje.inject.app.TestApp;
+import io.jooby.test.JoobyTest;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class AvajeInjectModuleTest {
+
+ static OkHttpClient client = new OkHttpClient();
+
+ @JoobyTest(TestApp.class)
+ public void shouldPropagateJoobyServicesToAvajeBeanScope(String serverPath) throws IOException {
+ Request request = new Request.Builder().url(serverPath + "ping").build();
+
+ try (Response response = client.newCall(request).execute()) {
+ assertEquals("test", response.body().string());
+ }
+ }
+}
diff --git a/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/app/Controller.java b/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/app/Controller.java
new file mode 100644
index 0000000000..f455f6b2a3
--- /dev/null
+++ b/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/app/Controller.java
@@ -0,0 +1,36 @@
+package io.jooby.avaje.inject.app;
+
+import com.fasterxml.jackson.databind.json.JsonMapper;
+import com.typesafe.config.Config;
+import io.avaje.inject.InjectModule;
+import io.jooby.annotation.GET;
+import io.jooby.annotation.Path;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+
+@Singleton
+@Path("")
+@InjectModule(requires = {JsonMapper.class, Config.class, String.class})
+public class Controller {
+
+ private final JsonMapper jsonMapper;
+ private final Config config;
+ private final String env;
+
+ @Inject
+ public Controller(JsonMapper jsonMapper, Config config, @Named("application.env") String env) {
+ this.jsonMapper = jsonMapper;
+ this.config = config;
+ this.env = env;
+ }
+
+ @GET
+ @Path("/ping")
+ public String ping() {
+ jsonMapper.version();
+ config.isEmpty();
+
+ return this.env;
+ }
+}
diff --git a/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/app/TestApp.java b/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/app/TestApp.java
new file mode 100644
index 0000000000..f091511c98
--- /dev/null
+++ b/modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/app/TestApp.java
@@ -0,0 +1,24 @@
+package io.jooby.avaje.inject.app;
+
+import com.fasterxml.jackson.databind.json.JsonMapper;
+import com.typesafe.config.Config;
+import io.jooby.Jooby;
+import io.jooby.avaje.inject.AvajeInjectModule;
+import io.jooby.jackson.JacksonModule;
+
+public class TestApp extends Jooby {
+
+ {
+ install(new JacksonModule());
+ install(AvajeInjectModule.of());
+
+ mvc(Controller.class);
+
+ onStarted(() -> {
+ JsonMapper jsonMapper = require(JsonMapper.class);
+ Config config = require(Config.class);
+ jsonMapper.version();
+ config.isEmpty();
+ });
+ }
+}