如何以编程方式创建一个Spring PublishSubscribeChannel

时间:2014-04-04 12:48:47

标签: spring spring-integration

我想以编程方式创建以下XML配置

<int:channel id="sample">
</int:channel>

我能做的是以下

PublishSubscribeChannel channel = new PublishSubscribeChannel();

但是没有方法来分配id。

3 个答案:

答案 0 :(得分:0)

实际上<int:channel>生成DirectChannel bean。

如果您想以编程方式执行此操作并拥有完整的Messaging基础结构,则应将其配置为bean:

@Configuration
public class MyConfiguration {

   @Bean
   public MessageChannel sample() {
       return new DirectChannel();
   }

}

id属性是Spring IOC容器的一个关键特性,当然,它不是具体类的可响应性。

在我看来,您应该查看Spring Integration 4.0的新内容。

答案 1 :(得分:0)

&#34; id&#34;特定于Spring应用程序上下文,并帮助识别在应用程序上下文中定义的每个实例。

你所拥有的翻译,更多&#34;详细&#34;到这个Spring配置:

<bean id="sample" class="org.springframework.integration.channel.DirectChannel" />

&#34; id&#34;像Spring一样,在Spring ApplicationContext的上下文中标识一个DirectChannel类实例。用于&#34; int:channel&#34;的默认通道定义是DirectChannel类,而不是PublishSubscribeChannel(DirectChannel)。

但是,除了频道本身之外,Spring Integration还会在幕后创建一些其他的bean。

答案 2 :(得分:0)

布线/注入DirectChannel Bean的另一种方式:For Spring 3.2.3.RELEASE version

Controller / Config Loader文件中的代码:

@Configuration
public class ConfigControllerLoader {
  @Autowired
  @Qualifier("direct-channel-bean")
  DirectChannel drtChannel;
}

上下文文件bean定义:

<int:channel id="direct-channel-bean"></int:channel>