2017-08-30 24 views
0

で一定でなければならない私は、私のクラスでこれを持っていると私はapplication.properties属性値が@Retryable

クラスA

@Value("${maxAttempts}") 
    private String maxAttempt; 
    @Value("${delay}") 
    private String delay; 
    @Value("${multiplier}") 
    private String multiplier; 
    @Value("${max-delay}") 
    private String maxDelay; 

からそれらを呼び出すと、私は

@Retryable(maxAttempts=maxAttempt, value=RuntimeException.class, backoff = @Backoff(delay =delay,multiplier = multiplier, maxDelay = maxDelay)) 
このラインでそれらを使用します

application.properties

maxAttempt=3 
delay=3 
max-delay=9 
multiplier=2 

は、しかし、私は属性値は定数でなければなりません取得


編集

@Value("${maxAttempts}") 
    private int maxAttempt; 
    @Value("${delay}") 
    private int delay; 
    @Value("${multiplier}") 
    private int multiplier; 
    @Value("${max-delay}") 
    private int maxDelay; 

@Retryable(maxAttempts="${maxAttempts}", value=RuntimeException.class, backoff = @Backoff(delay ="${delay}",multiplier = "${multiplier}", maxDelay = "${max-delay}"))// @Retryable(maxAttempts = 3, value = RuntimeException.class, backoff = @Backoff(delay = 10000)) 

私はたのjava langの取得文字列である必要があります。

答えて

0

spring-retry-1.2.0から見ると、@Retryableアノテーションで設定可能なプロパティを使用できます。

使用 "maxAttemptsExpression" は、使用のため

@Retryableを(以下のコードを参照してくださいmaxAttemptsExpression = "#{$ {maxAttempts}}"、バックオフ= @Backoff(delayExpression =「#{$ { delay}} "))

1.2.0未満のバージョンを使用すると動作しません。また、設定可能なプロパティクラスは必要ありません。

+0

cannnot resolve maxAttemptsExpression ... –

+0

どのバージョンのSpringリトライを使用していますか? – VelNaga

+0

1.1.2.RELEASE .. –