订购Spring` @ Configuration`类

时间:2017-03-14 11:35:19

标签: spring spring-integration spring-amqp

是否可以强制执行两个@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的配置文件,我不想声明队列。)

1 个答案:

答案 0 :(得分:0)

您可以尝试使用:

@Configuration
@Import({ConsumerBindingConfiguration.class})
public class ConsumerConfiguration