2017-02-17 9 views
0

ファイルからプロパティを読み取るために、Springの@PropertySource@ConfigurationPropertiesを使用しています。以下のサンプル・プロパティです:スプリングブート:プロパティ値リーダーを上書きする

以下
patterns[0]=\b(test1)\b 
patterns[1]=\b(test2)\b 

は、これらのプロパティを読み込むクラスです:

@Configuration 
@PropertySource("classpath:patterns.properties") 
@ConfigurationProperties 
public class PatternConfig { 

    private List<String> patterns; 
    //Getters and Setters 
} 

これは期待通りの特性を読み取り、patternsリストの値を設定します。しかし、私が実際にやりたいことは、それが追加される前にpatternをコンパイルしてそれをPatternsのリストに追加することです。例えば。新しいリストが

​​

だから、私は文字列プロパティにPattern.compileを呼び出してから、リストに追加されますでしょうPatternオブジェクトを返します何かをオーバーライドする必要になります。出来ますか?

+0

あなたが(多分もいけない)、それを上書きする必要はありませんIMHO、あなただけの文字列として定義し、ゲッターでそれを計算することができます。.. – Jaiwo99

+0

あなたはそれを試してみました... –

答えて

0

この設定では、パターンのリストを返し、@Beanで注釈を付け、そのメソッド内でパターンをコンパイルするメソッドを作成します。

@SpringBootApplication 
@EnableConfigurationProperties 
@Import(PatternConfig.class) 
public class DemoApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(DemoApplication.class, args); 
    } 
} 


@Configuration 
@PropertySource("classpath:patterns.properties") 
@ConfigurationProperties 
class PatternConfig { 


    public void setPatterns(List<String> patterns) { 
     this.patterns = patterns; 
    } 

    private List<String> patterns; 

    public List<String> getPatterns() { 
     return patterns; 
    } 

    @Bean 
    public List<Pattern> compiledPatterns() { 

     List<Pattern> compiledPatterns = new ArrayList<>(); 
     for (String pattern : patterns) { 
     compiledPatterns.add(
       Pattern.compile(pattern)); 
     } 
     return compiledPatterns; 
    } 

} 
+0

これが意味するであろう私は文字列内のリスト全体を読み込み、それをもう一度繰り返して(少なくとも一度)それを変換する必要があります。プロパティーがリストに追加されたときに何らかの形でこの変換を実行できますか? –

+0

それはまったく同じことを達成するつもりはありませんか? – PaulNUK

+0

答えに例を追加できますか? –

関連する問題