Java 如何在测试配置中使用相同的bean,但使用不同的属性?
我有单独的配置类,每个Java 如何在测试配置中使用相同的bean,但使用不同的属性?,java,spring,spring-amqp,spring-rabbit,Java,Spring,Spring Amqp,Spring Rabbit,我有单独的配置类,每个Spring概要文件创建不同的bean。我希望我的测试尽可能地模拟生产代码,因此我希望使用在Spring'PROD'概要文件下创建的相同的bean,但添加/更新专门用于测试的不同属性。实现这一目标的最佳方式是什么 举例说明我的意思: @Profile(PROD) public class ProdConfig { @Bean public SimpleRabbitListenerContainerFactory containerFactory() {
Spring概要文件创建不同的bean。我希望我的测试尽可能地模拟生产代码,因此我希望使用在Spring'PROD'概要文件下创建的相同的bean,但添加/更新专门用于测试的不同属性。实现这一目标的最佳方式是什么
举例说明我的意思:
@Profile(PROD)
public class ProdConfig {
@Bean
public SimpleRabbitListenerContainerFactory containerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setMaxConcurrentConsumers(2);
...
return factory;
}
}
@Profile(TEST)
public class TestConfig {
@Bean
public SimpleRabbitListenerContainerFactory containerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setMaxConcurrentConsumers(2);
...
/**
The advice chain should only set for testing purposes
**/
factory.setAdviceChain(interceptor());
return factory;
}
@Bean
RetryOperationsInterceptor interceptor() {
...
}
}
理想情况下,我不想在TestConfig
中复制代码来设置SimpleRableBitListenerContainerFactory
的各种属性。我只想加载ProdConfig,但调用setAdviceChain(interceptor())
尝试以下方法:
@Import(ProdConfig.class)
public class TestConfig {
@Autowired
private SimpleRabbitListenerContainerFactory containerFactory;
@Bean
RetryOperationsInterceptor interceptor() {
...
this.containerFactory.setAdviceChain(interceptor);
return interceptor;
}
}