私は春ウサギを使用しての春(ブート)アプリケーションを持っている、などのように、必要に応じて、私はバインディングBeanを作成:Spring(Boot)アプリケーションでBeanをコードに動的に追加するにはどうすればよいですか?
import org.springframework.amqp.core.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class QueueBindings { // first binding @Bean public Queue firstQueue(@Value("${rabbitmq.first.queue}") String queueName) { return new Queue(queueName); } @Bean public FanoutExchange firstExchange(@Value("${rabbitmq.first.exchange}") String exchangeName) { return new FanoutExchange(exchangeName); } @Bean public Binding firstBinding(Queue firstQueue, FanoutExchange firstExchange) { return BindingBuilder.bind(firstQueue).to(firstExchange); } // second binding @Bean public Queue secondQueue(@Value("${rabbitmq.second.queue}") String queueName) { return new Queue(queueName); } @Bean public FanoutExchange secondExchange(@Value("${rabbitmq.second.exchange}") String exchangeName) { return new FanoutExchange(exchangeName); } @Bean public Binding secondBinding(Queue secondQueue, FanoutExchange secondExchange) { return BindingBuilder.bind(secondQueue).to(secondExchange); } }
私が持っている問題は3つの豆あたりの情報の2つだけの部分があるということです、キュー名、および交換名。
@Bean
メソッドの束をコピー&ペーストするのではなく、任意の数のBeanをコンテキストに追加する方法はありますか?私はこのリスト内の各名前に対して、この3つのBeanをこの接続で追加するようなものが必要です。
私はついにこのアプローチを試してみました。私が取り組んでいる問題は、「環境」はマップのようなプロパティを扱うことができないということです。あなたは知られている物件を求めることができますが、この物件の下のすべての値を点線のパスとして扱うことはできません。 Spring Bootはマップにマップする機能を持っていますが、レジストラ内から他のBeanにアクセスする方法はわかりません。 –