首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spring Boot一次性读取多个属性文件?

使用Spring Boot一次性读取多个属性文件?
EN

Stack Overflow用户
提问于 2020-02-10 15:54:11
回答 1查看 284关注 0票数 1

我通过链接:How to pass a Map with application.properties和其他相关链接多次,但它仍然不起作用。

我使用的是Spring Boot和Spring REST示例。链接问题:How to by default execute the latest version of endpoint in Spring Boot REST?

我已经创建了类似这样的映射,并简单地读取映射

代码语言:javascript
复制
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'}

代码:

代码语言:javascript
复制
private String resolveLastVersion() {
   // read from configuration or something
    return "2";
}

代码:

代码语言:javascript
复制
@Component
@ConfigurationProperties
@PropertySource("classpath:restendpoint.properties")
public class PriorityProcessor {

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

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

代码:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-10 16:34:13

我建议执行以下操作:

代码语言:javascript
复制
@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;
    }
}

类映射将表示有关单个映射的信息:

代码语言:javascript
复制
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
}

在配置或spring boot应用程序类(具有main方法的那个)上:@EnableConfigurationProperties(ConfigurationProps.class)

在属性文件中放入:

代码语言:javascript
复制
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

在过滤器中(我假设您遵循了我在链接问题中的建议):

代码语言:javascript
复制
    @Component
    @Order(1)
    public class LatestVersionFilter implements Filter {

       private List<Mapping> mappings;

       public LatestVersionFilter(ConfigurationProps props) {
          this.mappings = props.getMapping();
       }
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60146164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档