#java #spring-boot #spring-mvc #spring-data-jpa
Вопрос:
У меня есть кое-какие данные в базе данных. Я хочу отправить эти данные в конечную точку rest api в файле. Поэтому я загружаю эти данные в свой объект. Преобразование этого объекта в тело строки json с помощью mapper.writeValueAsString. Теперь я должен разделить эти данные на блоки размером 5 МБ, а затем отправить их в конечную точку. Итак, у меня есть 2 проблемы
- Как разделить эти данные на 5 мб фрагментов
- Как создать файл размером 5 МБ без сохранения на дисках.
До сих пор мне это удавалось.
@Service
public class DataService {
@Autowired
private CityRepository cityRepository;
public void applyBatch() {
ExecutorService executor = Executors.newFixedThreadPool(10);
List< Future<String> > futureList = new ArrayList<Future<String>>();
List<City> cities = cityRepository.findAll();
Request request = new Request(1, cities);
ObjectMapper mapper = new ObjectMapper();
String jsonBody = "";
try {
jsonBody = mapper.writeValueAsString(request);
System.out.println("Size of json body: " jsonBody.length());
} catch (JsonProcessingException e) {
System.out.println(e.getMessage());
System.out.println("Incorrect JSON Format");
}
long sourceSize = jsonBody.length();
long fileSize = 5 * 1024 * 1024;
long noOfFiles;
if (sourceSize % fileSize == 0) {
noOfFiles = sourceSize / fileSize;
}
else {
noOfFiles = (sourceSize / fileSize) 1;
}
for (int i = 1; i <= noOfFiles; i ) {
}
Комментарии:
1. Должна ли конечная точка получать действительный JSON? Или вы можете отправить ему произвольные данные? Если вы можете просто разрезать его на 5 блоков, то String.substring выполнит эту работу.