¿Es posible hacer cumplir el pedido de dos clases @Configuration ?
El caso que tengo es que en una de las clases de configuración ( ConsumerConfiguration ) declaro @Bean de SimpleMessageListenerContainer :
@Bean public SimpleMessageListenerContainer container(ConnectionFactory connectionFactory) { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory); container.setQueueNames("queue"); return container; } que se supone que debe escuchar una queue . (Es parte del proyecto Spring Integration + AMQP)
Mi suposición es que todos los componentes de Rabbit se crearían de antemano y normalmente no quiero declararlos en Java. Sin embargo, para el perfil de desarrollo, me gustaría que la aplicación los creara por mí, por @Configuration dev
@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(); } } Desafortunadamente, cuando ejecuto la aplicación, la clase ConsumerConfiguration se ejecuta primero. Parece que la anotación @Order no funciona para las clases @Configuration . Vi la anotación @DependsOn , pero no puedo usarla en mi caso (para cualquier perfil diferente a dev no quiero declarar la cola).
Puedes intentar usar:
@Configuration @Import({ConsumerBindingConfiguration.class}) public class ConsumerConfiguration