在我的配置中,我具有以下结构:
uriConfig
uriConfigList:
- uri: /someuri
httpMethods
- GET
- POST
- uri: /anotheruri
httpMethods
- DELETE
我当然有一个用于此数据结构的域类,称为UriConfig。
我必须处理从config读取的数据并创建一个以uri为键的regexp模式映射:
List<UriConfig> -> Map<UriConfig.uri, Pattern>
我知道如何处理数据,并将uri映射到Patterns,但是如何将其“教导”到SpringBoot?
我有一个使用@PostConstruct的有效解决方案,但我想避免使用此注释:
@Getter
@Configuration
@ConfigurationProperties(prefix = "uriConfig")
@Slf4j
public class UriConfiguration {
public static final String REGEXP_PATTERN = "pattern%s";
private List<UriConfig> uriConfigList = new ArrayList<>();
private Map<UriConfig, Pattern> patternList;
@PostConstruct
public void init() {
patternList = uriConfigList.stream()
.collect(
Collectors.toMap(
Function.identity(),
uriConfig -> Pattern.compile(String.format(REGEXP_PATTERN, uriConfig.getUri()))
)
);
}
}
目标实现:
@Getter
@Configuration
@ConfigurationProperties(prefix = "uriConfig")
@Slf4j
public class UriConfiguration {
public static final String REGEXP_PATTERN = "pattern%s";
private Map<UriConfig, Pattern> patternList;
}
...以及其他位置的映射方法。
有什么想法可以解决这个小问题吗?