Print Spring configurations properties

import java.lang.reflect.Field;

import java.util.Objects;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.SystemPropertyUtils;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Component
@Setter
@Getter
@NoArgsConstructor
public class Configuration {
private static final Logger logger = LoggerFactory.getLogger(Configuration.class);

@Value("${prop_name}")
private int prop;

// Other propertyList

@Override
public String toString() {
final StringBuilder builder = new StringBuilder(System.lineSeparator());

for (Field field : this.getClass().getDeclaredFields()) {
try {
Value annotation = field.getAnnotation(Value.class);

if (Objects.nonNull(annotation)) {
String value = annotation.value();

builder.append(value.substring(2, value.indexOf(SystemPropertyUtils.PLACEHOLDER_SUFFIX)))
.append(" = ")
.append(field.get(this))
.append(System.lineSeparator());
}
} catch (Exception e) {
logger.info("{}", e);
}
}

return builder.toString();
}

@PostConstruct
private void postContruct() {
logger.info("{}", this);
}
}

Comments

Popular Posts