MyConfigurationProperties.java

package com.tdmconsult.ete.configuration;

import jakarta.validation.Valid;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

@Component
@Getter
@Setter
@ConfigurationProperties(prefix = "tdm.ete")
@Validated
@Slf4j
public class MyConfigurationProperties implements InitializingBean {

    @Valid
    private Pdf pdf = new Pdf();

    @Data
    @Accessors(chain = true)
    public static class Pdf {
        private boolean debug = false;
        @Nullable
        private String watermark;
        @Min(10) @Max(100)
        private float fontSize = 50;
        @NotNull
        private String logoImageFileName = "tdm.png";
        @Min(1) @Max(10)
        private float logoImageScale = 7.0f;
        @Min(0) @Max(1000)
        private float logoImageWidthOffset = 60f;
        @Min(0) @Max(1000)
        private float logoImageHeightOffset = 40f;
    }

    @Override
    public void afterPropertiesSet() {
        log.info("===========================================================");
        log.info(pdf.toString());
        log.info("===========================================================");
    }
}