From 1726fa780ac4c4164a52ac55799da21bee44a110 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Fri, 3 Feb 2023 07:45:30 +0000 Subject: [PATCH] Switch to supplier for one bean definition --- .../guice/annotation/GuiceFactoryBean.java | 6 +++++- .../guice/annotation/ModuleRegistryConfiguration.java | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) 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); }