2016-09-21 2 views
0

В моем приложении Spring Boot, которое будет выполняться локально, пользователь должен иметь возможность перетаскивать фотографии на веб-страницу из операционной системы и отображать их. Путь на ОС к файлам может быть установлен при запуске с:Spring Boot - обновить ResourceHandlerRegistry без перезапуска приложения

@SpringBootApplication 
public class UploaderApplication extends WebMvcConfigurerAdapter { 

private String workingDir = "/Users/example/Desktop/"; 

public static void main(String[] args) { 
    SpringApplication.run(UploaderApplication.class, args); 
} 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/dir/**") 
      .addResourceLocations("file://" + workingDir) 
      .setCachePeriod(0); 
    System.out.println(workingDir); 
} 

Но мне нужно, чтобы дать пользователю возможность обновлять каталог, где файлы поступают из после того, как приложение работает, так как абсолютная путь не всегда будет известен при запуске приложения. Если я отправлю запрос GET из браузера с новым пути к каталогу, введенным пользователем, как я могу обновить реестр?

спасибо.

+0

Почему бы не ввести конфигурационный компонент для пути? –

ответ

0

Вот как я решил решить эту проблему. Пользователь может заполнить форму для обновления базы данных каталогами, из которых они будут загружаться. Когда приложение загружается, он получает список каталогов и создает для них идентификаторы, которые затем могут использоваться в html.

@SpringBootApplication 
public class boxApplication extends WebMvcConfigurerAdapter { 

@Autowired private TemplateRepository templateRepository; 

public static void main(String[] args) { 
    SpringApplication.run(boxApplication.class, args); 
} 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 

    Template template = templateRepository.findById(1); 

    for (UploadDirectory local: template.getLocalDirectories()){ 

     registry.addResourceHandler("/dir" + local.getId() + "/**") 
       .addResourceLocations("file://" + local.getDirectory()) 
       .setCachePeriod(0); 
    } 
} 
} 
Смежные вопросы