2017-09-21 21 views
0
#Reports 
reports: 
    PnLReport: 
     reportId: 10 
     path: \\\\pathto\\PnLreport\\ 

    BalanceSheetReport: 
      reportId: 11 
      path: \\\\pathto\\balancesheet\\  

schedule-10: 
    description: Deliver pnl reports 
    report: 10 
    format: PDF, XLS 

私は自分のSpring Bootアプリケーションでapplication.ymlファイルで定義された上記の性質を持っています。マッピングのconfigs enum型へ

  1. はどのようにして、レポートの種類ごとに、例えばenumrepordIdpathプロパティをマップすることができます。たとえば:

    public enum ReportType{ 
    PNL(...) 
    BALANCE(...); 
    
    private final String reportId; 
    private final String path; 
    
    private ReportType(String reportId, String path) { 
        this.identifier = identifier; 
    } 
    
  2. 次に、私はファイルがパスに存在する場合、私が見ることができるように、例えばFileServiceクラスのパスを導出するreportIdschedule-10プロパティの下report: 10間のマップをしたいと思います。このマッピングを行うにはどうすればよいですか?

  3. これは私が自分の要件について考えることができる唯一の方法ですが、これにはよりよいアプローチがありますか?

あなたは以下のような構成ファイルからプロパティを読み取ること @Valueアノテーションを使用することができます

答えて

0

:私はより多くのである何を探しているので、このための列挙を使用することをお勧めしますかわからない

@Value({"reports.PnLReport.reportId"}) 
private final String reportId; 
+0

質問は、プリミティブではなくクラスとして構成設定を解析する方法と関係があります。 – Almund

0

構成可能なプロパティーインスタンスのように。たぶん単純なクラスを代わりに使用し、その2つのインスタンスを読み込むことを検討してください。

public class ReportType { 

    private Integer reportId; 

    private String path; 

    public String getPath() { 
     return path; 
    } 

    public void setPath(String path) { 
     this.path = path; 
    } 

    public void getReportId() { 
     return reportId; 
    } 

    public Integer setReportId(Integer reportId) { 
     this.reportId = reportId; 
    } 
} 

@Component 
@ConfigurationProperties(prefix = "reports") 
public class ReportTypes { 
    public ReportType PlnReport; 
    public ReportType BalanceSheetReport; 
} 
関連する問題