You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AbstractMessageSourceAdvice已弃用,求替代类及相关使用教程

关于AbstractMessageSourceAdvice弃用后的替代方案

替代类说明

AbstractMessageSourceAdvice被弃用后,直接实现**MessageSourceAdvice接口**即可,该接口是原抽象类的官方替代,包含相同的核心方法定义。

改造后的代码示例

将原继承抽象类的写法改为实现接口,代码调整如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.integration.core.MessageSource;
import org.springframework.integration.core.MessageSourceAdvice;
import org.springframework.messaging.Message;

public class EmptyFolderAdvice implements MessageSourceAdvice {

    private static final Logger LOGGER = LoggerFactory.getLogger(EmptyFolderAdvice.class);

    @Override
    public Message<?> afterReceive(Message<?> message, MessageSource<?> source) {
        if (message == null) {
            LOGGER.info("Empty folder, the process will stop");
            System.exit(0);
        }
        return message;
    }

    @Override
    public boolean beforeReceive(MessageSource<?> source) {
        // 与原AbstractMessageSourceAdvice的默认行为保持一致,无需额外逻辑时返回true
        return true;
    }
}

说明:MessageSourceAdvice接口包含beforeReceive和afterReceive两个方法,必须全部实现;如果不需要前置逻辑,返回true即可对齐原抽象类的默认行为。

使用教程要点

  • 绑定Advice到消息源:在配置中把该Advice绑定到文件夹轮询的消息源(如FileReadingMessageSource),示例Java配置如下:
    @Bean
    public FileReadingMessageSource fileReadingMessageSource() {
        FileReadingMessageSource source = new FileReadingMessageSource();
        source.setDirectory(new File("/path/to/your/target/folder"));
        // 将自定义Advice加入消息源的Advice链
        source.setAdviceChain(List.of(new EmptyFolderAdvice()));
        return source;
    }
    
  • 核心逻辑复用:原有的空文件夹判断、终止流程的逻辑可以完全保留,仅需调整类的实现关系。
  • 生产环境建议:System.exit(0)属于强制终止JVM的操作,生产环境更推荐通过控制消息源启停、关闭Spring容器等优雅方式终止流程。

内容的提问来源于stack exchange,提问作者Ares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:22:05