У меня есть веб-приложение с весенней загрузкой, которое может обслуживать файлы из статического файла на сервере.Я указал местоположение в файле свойств и использую его для настройки ResourceHandlerRegistry
.
@SpringBootApplication
public class MyWebApplication {
@Value("${targetdirectory}")
private String targetDirectory;
@Bean
WebMvcConfigurer configurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
targetDirectory = StringUtils.appendIfMissing(targetDirectory, "/", "/");
targetDirectory = StringUtils.prependIfMissing(targetDirectory, "file:/", "file:/");
registry.addResourceHandler("/resourcetarget/**").addResourceLocations(targetDirectory);
}
};
}
public static void main(String[] args) {
SpringApplication.run(MyWebApplication.class, args);
}
}
Все работает как положено.Теперь я должен динамически установить местоположение ресурса на основе пользовательского ввода.После загрузки приложения пользователь запускает HTTP-пост-запрос, где он может указать каталог, по которому можно использовать местоположение ресурса.Поэтому после этого любые запросы к /resourcetarget/**
должны быть сопоставлены с каталогом, указанным пользователем.Ниже приведен контроллер, который у меня есть.
@RestController
@RequestMapping(value = "api/locations", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class MyController {
@PostMapping
public ResponseEntity<Object> handleLocationSet(@RequestBody LocationDTO locationDto) {
String newFileLocation = locationDto.getLocation();
// How do I update the ResourceHandlerRegistry mapping for /resourcetarget/**
// with the new location received here?
return ResponseEntity.ok();
}
}
Как я могу обновить сопоставление для этого динамического расположения для статического URL ресурса.Пожалуйста, помогите