diff --git a/src/main/java/org/springframework/guice/annotation/GuiceFactoryBean.java b/src/main/java/org/springframework/guice/annotation/GuiceFactoryBean.java index 4474115..19ae371 100644 --- a/src/main/java/org/springframework/guice/annotation/GuiceFactoryBean.java +++ b/src/main/java/org/springframework/guice/annotation/GuiceFactoryBean.java @@ -38,7 +38,6 @@ class GuiceFactoryBean implements FactoryBean { private final boolean isSingleton; - @Autowired private Injector injector; GuiceFactoryBean(Class beanType, Key key, boolean isSingleton) { @@ -47,6 +46,11 @@ class GuiceFactoryBean implements FactoryBean { this.isSingleton = isSingleton; } + @Autowired + void setInjector(Injector injector) { + this.injector = injector; + } + @Override public T getObject() throws Exception { return (T) this.injector.getInstance(this.key); diff --git a/src/main/java/org/springframework/guice/annotation/ModuleRegistryConfiguration.java b/src/main/java/org/springframework/guice/annotation/ModuleRegistryConfiguration.java index a37d965..4c3285d 100644 --- a/src/main/java/org/springframework/guice/annotation/ModuleRegistryConfiguration.java +++ b/src/main/java/org/springframework/guice/annotation/ModuleRegistryConfiguration.java @@ -160,10 +160,10 @@ class ModuleRegistryConfiguration implements BeanDefinitionRegistryPostProcessor // Register the injector initializer RootBeanDefinition beanDefinition = new RootBeanDefinition(GuiceInjectorInitializer.class); - ConstructorArgumentValues args = new ConstructorArgumentValues(); - args.addIndexedArgumentValue(0, modules); - args.addIndexedArgumentValue(1, this.applicationContext); - beanDefinition.setConstructorArgumentValues(args); + final List finalModules = new ArrayList<>(modules); + beanDefinition.setInstanceSupplier(() -> new GuiceInjectorInitializer(finalModules, + (ConfigurableApplicationContext) this.applicationContext)); + beanDefinition.setAttribute(SpringModule.SPRING_GUICE_SOURCE, true); registry.registerBeanDefinition("guiceInjectorInitializer", beanDefinition); }