Tutorial/Java ve Spring Boot

Java ve Spring Boot ile döviz kurları

RestClient, BigDecimal, ortam tabanlı kimlik doğrulama ve güncellik alanlarıyla tipli bir Spring Boot istemcisi kurun.

MMexchangerate.dev·Jul 17, 2026·6 dk okuma

Spring RestClient JSON yanıtını Java record içine eşler. Kurları BigDecimal olarak tutun, anahtarı yapılandırmadan alın ve source, market_session, data_updated_at alanlarını koruyun.

Key points
Spring RestClient kullanın.
Kur ve tutarlarda BigDecimal kullanın.
Anahtarı EXCHANGERATE_API_KEY üzerinden alın.
data_updated_at alanını kurla saklayın.

Tipli RestClient oluşturun

Record kur haritasını ve yorumlama alanlarını korur. Jackson, snake_case adlarını @JsonProperty ile eşler.

java · ExchangeRateClient.javacopy
package com.example.fx;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClient;

record LatestRates(
    String base,
    String source,
    @JsonProperty("market_session") String marketSession,
    @JsonProperty("data_updated_at") Instant dataUpdatedAt,
    Map<String, BigDecimal> rates
) {}

@Component
public final class ExchangeRateClient {
  private final RestClient client;

  public ExchangeRateClient(
      RestClient.Builder builder,
      @Value("${exchangerate.api-key}") String apiKey
  ) {
    this.client = builder
        .baseUrl("https://api.exchangerate.dev/v1")
        .defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer " + apiKey)
        .build();
  }

  public LatestRates latest(String base) {
    return client.get()
        .uri("/latest/{base}?symbols=EUR,GBP", base)
        .retrieve()
        .body(LatestRates.class);
  }
}

Anahtarı ortamdan yükleyin

yaml · application.yamlcopy
exchangerate:
  api-key: ${EXCHANGERATE_API_KEY}

Güncellik ve hataları açıkça işleyin

RestClient.retrieve() 4xx ve 5xx yanıtlarında hata verir. Sınırlı zaman aşımı belirleyin, yalnızca geçici hataları yineleyin. 401 anahtar düzeltmesi, 429 trafik azaltımı gerektirir.

Hesap boyunca BigDecimal kullanın
Kuru tam hassasiyette tutun ve yalnızca nihai tutarı hedef para birimine göre yuvarlayın.
  • Bir istemciyi yeniden kullanın.
  • Bağlantı ve okuma süresi belirleyin.
  • Yalnızca başarıyı önbelleğe alın.
  • Kaynak ve zamanı saklayın.
MM
exchangerate.dev
FX verileriyle çalışan geliştiriciler için entegrasyon rehberleri.

Keep reading

GuideTek çağrıda geçmiş FX zaman serisiRead Referencesource ve market_session alanlarını okumaRead GuideGösterge ve uygulanabilir FX kurlarıRead