Можно ли определить шаблон c bean один раз следующим образом:
@Configuration
public class TestConfiguration {
@Bean
public <T> EmitterProcessor<T> emitterProcessor() {
return EmitterProcessor.create();
}
}
, а затем иметь уникальный экземпляр для параметризованного типа T
, чтобы следующий тест проходит:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestConfiguration.class)
public class GenericBeanTest {
@Autowired
private EmitterProcessor<String> stringEmitterProcessor;
@Autowired
private EmitterProcessor<Integer> integerEmitterProcessor;
@Test
public void testExistsAndIsUnique() {
assertNotNull(stringEmitterProcessor);
assertNotNull(integerEmitterProcessor);
assertNotSame(stringEmitterProcessor, integerEmitterProcessor);
}
}
В настоящее время stringEmitterProcessor
и integerEmitterProcessor
являются одним и тем же объектом, так что последняя строка в тесте assertNotSame(stringEmitterProcessor, integerEmitterProcessor);
не проходит.
Единственный другой способ, которым я мог Представьте себе, что я должен реализовать пользовательский BeanFactory
, который будет делать различие на основе параметризованного типа при автопроводке по типу.