fixed issue where multibindings in guice cause duplicate beans in Spring

This commit is contained in:
Taylor Wicksell
2019-05-03 17:05:28 -07:00
committed by Taylor Wicksell
parent 3650197554
commit 6fec10d19c
3 changed files with 28 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ package org.springframework.guice;
import com.google.inject.AbstractModule;
import com.google.inject.Module;
import com.google.inject.multibindings.OptionalBinder;
import org.junit.AfterClass;
import org.junit.Test;
import org.springframework.beans.factory.BeanCreationException;
@@ -10,6 +11,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.guice.BindingDeduplicationTests.SomeDependency;
import org.springframework.guice.BindingDeduplicationTests.SomeOptionalDependency;
import org.springframework.guice.annotation.EnableGuiceModules;
import static org.junit.Assert.assertNotNull;
@@ -28,6 +30,8 @@ public class BindingDeduplicationTests {
BindingDeduplicationTestsConfig.class);
SomeDependency someDependency = context.getBean(SomeDependency.class);
assertNotNull(someDependency);
SomeOptionalDependency someOptionalDependency = context.getBean(SomeOptionalDependency.class);
assertNotNull(someOptionalDependency);
context.close();
}
@@ -39,8 +43,8 @@ public class BindingDeduplicationTests {
context.close();
}
public static class SomeDependency {
}
public static class SomeDependency {}
public static class SomeOptionalDependency {}
}
@@ -49,16 +53,25 @@ public class BindingDeduplicationTests {
class BindingDeduplicationTestsConfig {
@Bean
public SomeDependency stringBean() {
public SomeDependency someBean() {
return new SomeDependency();
}
@Bean
public SomeOptionalDependency someOptionalBean() {
return new SomeOptionalDependency();
}
@Bean
public Module module() {
return new AbstractModule() {
@Override
protected void configure() {
bind(SomeDependency.class).asEagerSingleton();
OptionalBinder
.newOptionalBinder(binder(), SomeOptionalDependency.class)
.setDefault()
.to(SomeOptionalDependency.class);
}
};
}