是否可以强制执行两个@Configuration
类的排序?
我遇到的情况是,在其中一个配置类(ConsumerConfiguration
)中,我声明了@Bean
的{{1}}:
SimpleMessageListenerContainer
应该听@Bean
public SimpleMessageListenerContainer container(ConnectionFactory connectionFactory) {
SimpleMessageListenerContainer container =
new SimpleMessageListenerContainer(connectionFactory);
container.setQueueNames("queue");
return container;
}
。 (它是Spring Integration + AMQP项目的一部分)
我的假设是所有Rabbit组件都会事先创建,我通常不希望用Java声明它们。但是,对于queue
个人资料,我希望应用程序为我创建它们,因此另一个dev
类:
@Configuration
不幸的是,当我运行应用程序时,首先运行@Configuration
@RequiredArgsConstructor
@Profile("dev")
public class ConsumerBindingConfiguration {
@Bean
public Exchange exchange() {
return ExchangeBuilder.topicExchange("exchange")
.durable()
.build();
}
@Bean
Queue queue() {
return QueueBuilder.durable("queue")
.build();
}
@Bean
Binding binding() {
return BindingBuilder.bind(queue())
.to(exchange())
.with("key")
.noargs();
}
}
类。似乎ConsumerConfiguration
注释不适用于@Order
类。我看到@Configuration
注释,但我不能在我的情况下使用它(对于任何不同于@DependsOn
的配置文件,我不想声明队列。)
答案 0 :(得分:0)
您可以尝试使用:
@Configuration
@Import({ConsumerBindingConfiguration.class})
public class ConsumerConfiguration