Как я могу динамически добавлять обработчики ресурсов в приложение Spring Boot? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть этот кусок кода:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/images/**")
            .addResourceLocations("file:static/dragontail-9.11.1/9.11.1/img/")
            .resourceChain(true);
}

Я хотел бы поддержать обновление файлов данных во время выполнения всякий раз, когда есть обновление, которое я могу загрузить. Поэтому мне нужно иметь возможность поддерживать изменение этого номера версии во время выполнения. Я мог бы использовать переменную для этого, но проблема в том, что Мне нужно поддерживать несколько версий одновременно .

У меня есть HashSet, который управляет номерами поддерживаемых версий. Как я могу перейти от этого к динамическому сопоставлению с ним обработчиков ресурсов?

Я также пытался использовать сопоставления муравьев в .addResourceLocations, что могло бы помочь, но кажется, что сопоставления муравьев поддерживаются только в .addResourceHandler


Полагаю, я решил проблему - непосредственное сопоставление путей должно позволить мне изменять пути к ресурсам во время выполнения. Мы можем расширить AntPathMatcher#match для произвольного сопоставления ресурсов с URI. На самом деле я еще не пробовал это, но, похоже, что проблема должна быть в этом.

@Configuration
public class StaticResourceConfiguration implements WebMvcConfigurer {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/images/**")
            .addResourceLocations("file:static/dragontail-9.11.1/img/")
            .resourceChain(true);
}

@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
    AntPathMatcher matcher = new AntPathMatcher();
    matcher.setCaseSensitive(false);
    configurer.setPathMatcher(matcher);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...