У меня есть этот кусок кода:
@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);
}
}