SpringBoot中的配置转换

时间:2018-11-16 14:24:10

标签: spring-boot configuration mapping

在我的配置中,我具有以下结构:

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;
}

...以及其他位置的映射方法。

有什么想法可以解决这个小问题吗?

0 个答案:

没有答案