Код IT
← Каталог

Рекомендации по разработке на Java — 11.3. Кэширование результатов

Фрагмент из «Рекомендации по разработке на Java»: 11.3. Кэширование результатов.

Java main.java
public class ExchangeRateService {
    private final Cache<String, BigDecimal> rateCache = 
        CacheBuilder.newBuilder()
            .maximumSize(1000)
            .expireAfterWrite(1, TimeUnit.HOURS)
            .build();
    
    public BigDecimal getRate(String fromCurrency, String toCurrency) {
        String key = fromCurrency + "_" + toCurrency;
        return rateCache.get(key, () -> fetchRateFromExternalApi(fromCurrency, toCurrency));
    }
    
    private BigDecimal fetchRateFromExternalApi(String from, String to) {
        // Вызов внешнего API
        return externalApi.getExchangeRate(from, to);
    }
}
public class ExchangeRateService {
    private final Cache<String, BigDecimal> rateCache = 
        CacheBuilder.newBuilder()
            .maximumSize(1000)
            .expireAfterWrite(1, TimeUnit.HOURS)
            .build();
    
    public BigDecimal getRate(String fromCurrency, String toCurrency) {
        String key = fromCurrency + "_" + toCurrency;
        return rateCache.get(key, () -> fetchRateFromExternalApi(fromCurrency, toCurrency));
    }
    
    private BigDecimal fetchRateFromExternalApi(String from, String to) {
        // Вызов внешнего API
        return externalApi.getExchangeRate(from, to);
    }
}