类型DelimitedLineTokenizer中的方法SetDelimiter(String)不适用于参数(char)-Spring Batch

发布于 2025-02-09 19:27:27 字数 1162 浏览 1 评论 0 原文

我正在尝试迁移弹簧批量核心v 2.1.8.Release至4.0.3 (使用Maven Project而不是Spring Boot),我看到我的代码正在破裂,我真的需要使事情与之一致此最新版本以及

错误:

类型DelimitedLineTokenizer中的方法setDelimiter(String)不适用于参数(char)

类型不匹配:无法从字符串转换为char

代码:

import org.springframework.batch.item.file.LineCallbackHandler;
import org.springframework.batch.item.file.transform.FieldSet;

public class HeaderCallbackTokenizer extends InterningDelimitedLineTokenizer implements LineCallbackHandler {
    private char delimiter = DELIMITER_COMMA;
    
    @Override
    public void setDelimiter(char delimiter) {
        super.setDelimiter(delimiter);
        
        this.delimiter = delimiter;
    }
    
    @Override
    public void handleLine(String line) {
        if (line.startsWith("X" + delimiter)) {
            List<String> names = doTokenize(line);
            
            names.set(0,  "TYPE");
            
            setNames(names.toArray(new String[0]));
        }
    }
    
    @Override
    public FieldSet tokenize(String line) {
        return super.tokenize(line);
    }
}

I'm trying to migrate Spring Batch Core v 2.1.8.RELEASE to 4.0.3 (Using maven project not Spring Boot), I see my code is breaking and I really need make the things consistent with this latest version as well

Error:

The method setDelimiter(String) in the type DelimitedLineTokenizer is not applicable for the arguments (char)

Type mismatch: cannot convert from String to char

Code:

import org.springframework.batch.item.file.LineCallbackHandler;
import org.springframework.batch.item.file.transform.FieldSet;

public class HeaderCallbackTokenizer extends InterningDelimitedLineTokenizer implements LineCallbackHandler {
    private char delimiter = DELIMITER_COMMA;
    
    @Override
    public void setDelimiter(char delimiter) {
        super.setDelimiter(delimiter);
        
        this.delimiter = delimiter;
    }
    
    @Override
    public void handleLine(String line) {
        if (line.startsWith("X" + delimiter)) {
            List<String> names = doTokenize(line);
            
            names.set(0,  "TYPE");
            
            setNames(names.toArray(new String[0]));
        }
    }
    
    @Override
    public FieldSet tokenize(String line) {
        return super.tokenize(line);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

抹茶夏天i‖ 2025-02-16 19:27:27

。您需要更新代码以传递 String 而不是 char 。这是您迁移工作的一部分。

顺便说一句,我不会在任何迁移路径中跳过主要版本(V3),以最大程度地减少迁移的每个步骤中版本之间的差距。

This has changed in https://github.com/spring-projects/spring-batch/pull/61. You need to update your code to pass a String instead of char. This is part of your migration work.

And BTW, I would not skip a major version (v3 in your case) in any migration path in order to minimize the gap between versions in each step of the migration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文