что именно занимает так много времени, проведи профилирование чтобы выяснить где больше всего проводит времени твой код - например внутренняя обработка данных или база данных?
stream<T>
Это происходит быстроequals()
и в случае надобности обновитьКлассический пример: для каждой записи ты делаешь запрос - найти соответствующий объект(ы) в базе, прочитать их, изменить и записать результат в базе. нужно сделать так - выгрузить сразу много записей (условно по 1000), изменить их с учетом того что это будет происходить в оперативной памяти, многократная запись одних и тех же объектов не будет занимать столько времени как запись в базу
@CrossOrigin
@Configuration
@RequiredArgsConstructor
public class GlobalCorsConfiguration {
private final CorsProperties corsProperties;
@Bean
public CorsWebFilter corsWebFilter() {
final CorsConfiguration corsConfig = new CorsConfiguration();
corsConfig.setAllowedOrigins(
Arrays.asList(corsProperties.getAllowedOrigins())
);
corsConfig.setMaxAge(3600L);
corsConfig.setAllowedMethods(Arrays.asList("OPTIONS", "GET", "POST", "PUT", "DELETE", "PATCH"));
corsConfig.addAllowedHeader("*");
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", corsConfig);
return new CorsWebFilter(source);
}
}
@CrossOrigin
@Configuration
@Profile({"dev", "liquibase"})
public class CustomCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter() {
final CorsConfiguration corsConfig = new CorsConfiguration();
corsConfig.setAllowedOrigins(Collections.singletonList("*"));
corsConfig.setMaxAge(3600L);
corsConfig.setAllowedMethods(Arrays.asList("OPTIONS", "GET", "POST", "PUT", "DELETE", "PATCH"));
corsConfig.addAllowedHeader("*");
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", corsConfig);
return new CorsWebFilter(source);
}
}
Также попробуйте перенести add_header в if(OPTIONS).
Большое спасибо за ответ. Буду думать, как улучшить сервис.
Да, это происходит быстро.
Именно второй этап занимает дольше по времени, так как есть маппинги, валидации, проверки существования записи в БД, поиск координат и прочее.
Да, используется.