Spring Batch 项目编写器 REST API

shu*_*rma 6 spring-batch spring-boot spring-rest itemwriter spring-resttemplate

是否可以在Spring批处理项目中使用RestAPI(REST TEMPLATE)从DB读取数据,处理它并在ItemWriter中发送到另一个系统?我所能看到的就是获取数据并将其写入 csv 文件。

小智 2

可以创建您自己的定制 ItemWriter

根据您的情况,请将spring-boot-starter-web依赖项添加到您的pom.xmlbuild.gradle

例子:

package com.example.batch;

import lombok.extern.log4j.Log4j2;
import org.springframework.batch.item.ItemWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

import java.util.List;

@Log4j2
public class RestItemWriter implements ItemWriter<String> {
    @Autowired
    RestTemplate restTemplate;

    public RestItemWriter(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @Override
    public void write(List<? extends String> items) throws Exception {
        ResponseEntity<Users> users = restTemplate.getForEntity("https://jsonplaceholder.typicode.com/users/1", Users.class);

        log.info("Status code is: " + users.getStatusCode());
    }
}


package com.example.batch;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Users {

    public String id;
    public String name;
    public String username;
    public String email;
    public String phone;
}

Run Code Online (Sandbox Code Playgroud)

有关自定义项目编写器的更多信息请参见此处