bugfix> java > 投稿

@Cacheableアノテーションのunless式でspringプロパティのプレースホルダーを使用することは可能ですか?返された結果が@PropertySource( "classpath:application.properties")で指定されたプロパティminCacheCalcの値よりも小さい場合を除き、キャッシュしたいサービスメソッドがあります。

キャッシュしたいサービスクラスメソッドを次に示します。

@Service
class CalculationService {
    // @Cacheable(cacheNames="calculations", unless="#result < 10") // works fine hardcoded
    @Cacheable(cacheNames="calculations", unless="#result < ${minCacheCalc}")
    public Integer calculate(Integer i) {
        System.out.println("calculate(" + i + ")");
        return i * i - i;
    }
}

これを呼び出すとエラーがスローされます。

SpelParseException: EL1041E: After parsing a valid expression, there is still more data in the expression: 'lcurly({)'

私は構文の多くのバリエーションを試しましたが、見つけることができないようです。

@Cacheableの unless でプロパティを参照する方法はありますかパラメータ?