Always use the Named key when looking up a Guice object in the GuiceAutowireCandidateResolver.

This commit is contained in:
Stacey Watro
2022-05-17 17:19:05 -04:00
committed by Dave Syer
parent dc7dc52931
commit e39d980efb
2 changed files with 27 additions and 4 deletions

View File

@@ -71,6 +71,26 @@ public class PartialInjectionTests {
assertThat(example.getUnnamedMessage()).isEqualTo("apple");
}
@Test
void shouldResolveNamedComponentOnSecondInjectWhenUsingConstructorInjection() {
Injector injector = guiceInjectorWithSpringBean(ConstructorInjectionExample.class);
ConstructorInjectionExample example = injector.getInstance(ConstructorInjectionExample.class);
example.getNamedMessage();
assertThat(example.getNamedMessage()).isEqualTo("banana");
}
@Test
void shouldResolveNamedComponentOnSecondInjectWhenUsingSetterInjection() {
Injector injector = guiceInjectorWithSpringBean(SetterInjectionExample.class);
SetterInjectionExample example = injector.getInstance(SetterInjectionExample.class);
example.getNamedMessage();
assertThat(example.getNamedMessage()).isEqualTo("banana");
}
private Injector guiceInjectorWithSpringBean(Class<?> classForContext) {
Class<?>[] components = new Class<?>[] { classForContext };
BeanFactoryProvider beanFactoryProvider = BeanFactoryProvider.from(components);