@Свойства конфигурации не являются обязательными свойствами

#java #spring-boot #properties-file

Вопрос:

У меня есть следующий класс конфигурации:

 
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Positive;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.annotation.Configuration;
import org.springframework.validation.annotation.Validated;

import lombok.Data;


@Configuration
@ConfigurationProperties(prefix = "mail.config")
@Data
@RefreshScope
@Validated
public class MailboxPropertiesConfiguration{
    
    @NotBlank
    private String host;

    @NotBlank
    private String adminLogin;

    @NotBlank
    private String adminPassword;

}
 

и следующий файл свойств:

 mail.config.host=127.0.0.1
mail.config.admin-login=xxx
mail.config.admin-password=yyy

 

И следующий класс:

 @Configuration
public class MailboxProducer extends AbstractConfiguration{

    protected MailboxProducer(MailboxPropertiesConfiguration config) {
        super(config.getHost());
    }
    
}
 

Моя проблема в том, что config.getHost() это значение равно нулю (как и другие свойства), хотя у меня есть установщики ( @Data )
Я попытался удалить @ConfigurationProperties и использовать @Value вместо этого, но у меня тот же результат.
Не могли бы вы, пожалуйста, дать мне знать, что я делаю не так?

Спасибо. (Я использую Spring boot 2.4.3)

Ответ №1:

  1. Удалить @Configuration из MailboxPropertiesConfiguration .
  2. Добавить @EnableConfigurationProperties(MailboxPropertiesConfiguration.class) к MailboxProducer