簡體   English   中英

使用 Spring Boot 一次性讀取多個屬性文件?

[英]Read multiple properties file in one go using Spring Boot?

我瀏覽了鏈接: How to pass a Map<String, String> with application.properties和其他相關鏈接多次,但仍然無法正常工作。

我正在使用 Spring Boot 和 Spring REST 示例。 鏈接問題: 如何在 Spring Boot REST 中默認執行最新版本的端點? .

我已經創建了這樣的映射,只需閱讀映射

get.customers={GET: '/app-data/customers', VERSION: 'v1'}
post.customers={POST: '/app-data/customers', VERSION: 'v1'}
get.customers.custId={GET: '/app-data/customers/{custId}', VERSION: 'v2'}

代碼:

private String resolveLastVersion() {
   // read from configuration or something
    return "2";
}

代碼:

@Component
@ConfigurationProperties
@PropertySource("classpath:restendpoint.properties")
public class PriorityProcessor {

    private final Map<String, String> priorityMap = new HashMap<>();

    public Map<String, String> getPriority() {
        return priorityMap;
    }
}

代碼:

我建議以下實現:

@ConfigurationProperties(prefix="request")
public class ConfigurationProps {
    private List<Mapping> mapping;

    public List<Mapping> getMapping() {
        return mapping;
    }

    public void setMapping(List<Mapping> mapping) {
        this.mapping = mapping;
    }
}

類映射將表示有關單個映射的信息:

public class Mapping {
    private String method;
    private String url;
    private String version;

    public Mapping(String method, String url, String version) {
        this.method = method;
        this.url = url;
        this.version = version;
    }

    public Mapping() {
    }

    // getters setters here
}

在 Configuration 或 spring boot 應用程序類(具有 main 方法的@EnableConfigurationProperties(ConfigurationProps.class) )上: @EnableConfigurationProperties(ConfigurationProps.class)

在屬性文件中放置:

request.mapping[0].method=get
request.mapping[0].url=/customers
request.mapping[0].version=1

request.mapping[1].method=post
request.mapping[1].url=/students
request.mapping[1].version=2

在過濾器中(我假設您遵循了鏈接問題中的建議):

    @Component
    @Order(1)
    public class LatestVersionFilter implements Filter {

       private List<Mapping> mappings;

       public LatestVersionFilter(ConfigurationProps props) {
          this.mappings = props.getMapping();
       }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM