我想以编程方式创建以下XML配置
<int:channel id="sample">
</int:channel>
我能做的是以下
PublishSubscribeChannel channel = new PublishSubscribeChannel();
但是没有方法来分配id。
答案 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>