Springboot Динамически изменяет сопоставление ResourceHandlerRegistry - PullRequest
1 голос
/ 20 сентября 2019

У меня есть веб-приложение с весенней загрузкой, которое может обслуживать файлы из статического файла на сервере.Я указал местоположение в файле свойств и использую его для настройки 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 ресурса.Пожалуйста, помогите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...