返回

Spring Integration 的资源支持

发布时间:2022-12-16 22:03:50 296
# webkit# spring

Spring Integration 的资源支持_spring

资源入站通道适配器建立在 Spring 的抽象之上,以支持跨各种实际类型的底层资源(如文件、URL 或类路径资源)的更大灵活性。 因此,它与文件入站通道适配器类似,但比文件入站通道适配器更通用。​​Resource​

资源入站通道适配器

资源入站通道适配器是一个轮询适配器,用于创建其有效负载是对象的集合。​​Message​​​​Resource​

​Resource​​对象根据属性指定的模式进行解析。 然后,解析对象的集合将作为 内的有效负载发送到适配器的通道。 这是资源入站通道适配器和文件入站通道适配器之间的一个主要区别:后者缓冲对象并按 .​​pattern​​​​Resource​​​​Message​​​​File​​​​File​​​​Message​

以下示例显示了一个简单的配置,该配置查找类路径上可用的包中以“properties”扩展名结尾的所有文件,并将它们作为 的有效负载发送到名为“resultChannel”的通道:​​things.thing1​​​​Message​

<int:resource-inbound-channel-adapter id="resourceAdapter"
channel="resultChannel"
pattern="classpath:things/thing1/*.properties">
<int:poller fixed-rate="1000"/>
</int:resource-inbound-channel-adapter>

资源入站通道适配器依赖于策略接口来解析提供的模式。 它默认为当前 . 但是,您可以通过设置属性来提供对您自己的实现实例的引用,如以下示例所示:​​org.springframework.core.io.support.ResourcePatternResolver​​​​ApplicationContext​​​​ResourcePatternResolver​​​​pattern-resolver​

<int:resource-inbound-channel-adapter id="resourceAdapter"
channel="resultChannel"
pattern="classpath:things/thing1/*.properties"
pattern-resolver="myPatternResolver">
<int:poller fixed-rate="1000"/>
</int:resource-inbound-channel-adapter>

<bean id="myPatternResolver" class="org.example.MyPatternResolver"/>

您可能有一个用例,需要进一步筛选由 . 例如,您可能希望防止已解析的资源再次出现在已解析资源的集合中。 另一方面,您的资源可能会经常更新,并且您确实希望再次获取它们。 换句话说,定义附加过滤器和完全禁用过滤都是有效的用例。 您可以提供自己的策略接口实现,如以下示例所示:​​ResourcePatternResolver​​​​org.springframework.integration.util.CollectionFilter​

public interface CollectionFilter {

Collection filter(Collection unfilteredElements);

}

接收未筛选元素(在前面的示例中是对象)的集合,并返回相同类型的筛选元素的集合。​​CollectionFilter​​​​Resource​

如果使用 XML 定义适配器,但未指定过滤器引用,那么资源入站通道适配器将使用缺省实现 。 该缺省过滤器的实现类为 。 它记住在上一个调用中传递的元素,以避免多次返回这些元素。​​CollectionFilter​​​​org.springframework.integration.util.AcceptOnceCollectionFilter​

若要注入您自己的实现,请使用该属性,如以下示例所示:​​CollectionFilter​​​​filter​

<int:resource-inbound-channel-adapter id="resourceAdapter"
channel="resultChannel"
pattern="classpath:things/thing1/*.properties"
filter="myFilter">
<int:poller fixed-rate="1000"/>
</int:resource-inbound-channel-adapter>

<bean id="myFilter" class="org.example.MyFilter"/>

如果您不需要任何筛选,甚至希望禁用默认策略,请为 filter 属性提供一个空值(例如,​​CollectionFilter​​​​filter=""​​)

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Spring Integration对Redis的支持 2022-12-16 21:49:49