DownstreamProperties.java

package com.dani.bff.config;

import java.net.URI;
import java.time.Duration;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * Externalized connection settings for downstream services consumed by the BFF.
 */
@ConfigurationProperties(prefix = "downstream")
public class DownstreamProperties {

    private Service userService = new Service();
    private Service productService = new Service();

    public Service getUserService() {
        return userService;
    }

    public void setUserService(Service userService) {
        this.userService = userService;
    }

    public Service getProductService() {
        return productService;
    }

    public void setProductService(Service productService) {
        this.productService = productService;
    }

    /**
     * Base URL and timeout for one HTTP downstream service.
     */
    public static class Service {

        private URI baseUrl;
        private Duration timeout = Duration.ofSeconds(2);

        public URI getBaseUrl() {
            return baseUrl;
        }

        public void setBaseUrl(URI baseUrl) {
            this.baseUrl = baseUrl;
        }

        public Duration getTimeout() {
            return timeout;
        }

        public void setTimeout(Duration timeout) {
            this.timeout = timeout;
        }
    }
}