Listener里执行Service的方法

读取Excel文件的数据并执行Service的方法

我遇到过这样的情况,我需要读取Excel但是Excel文件太大了,我不能全部读取出来,然后再存储。所以只能分批读取。
如果直接在Listener里调用Service方法,会遇到空指针异常。
这是因为Service是自动注入的,但Listener却要new出来。
怎么在不跳出Listener的情况下调用Service的方法呢?
在Listener中增加一个Function,和init方法(或者有参构造方法)

SendListenerprivate BiFunction<List<List<String>>, Long, String> function;
public void init(Long page, int pageSize, String phoneLine, BiFunction<List<List<String>>, Long, String> function) {
        this.page = page;
        this.pageSize = pageSize;
        this.phoneLine = phoneLine;
        this.list = Lists.newArrayList();
        this.errorList = Lists.newArrayList();
        this.function = function;
    }

外边调用的时候就可以这样写了

外边的类
sendListener.init((long) page, pageSize, phoneLine, (rowContentlists, requestId) -> {
         try {
             sendMessages(template, requestId, phoneLine, taskId, rowContentlists);//这个我需要调用的方法
         } catch (Exception e) {
             log.error(e.getMessage());
             throw new CustomException("失败");
         }
         return null;
     });

这样在SendListener里可以通过function.apply(list, page);调用外部的方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值