@ConfigurationProperties 不绑定属性
@ConfigurationProperties not binding properties
我有以下配置CLass:
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
以及以下 class:
@Configuration
public class MailboxProducer extends AbstractConfiguration{
protected MailboxProducer(MailboxPropertiesConfiguration config) {
super(config.getHost());
}
}
我的问题是 config.getHost()
为空(其他属性也是),即使我有设置器 (@Data
)
我尝试删除 @ConfigurationProperties
并改用 @Value
但结果相同。
你能告诉我我做错了什么吗?
谢谢。
(我正在使用 Spring boot 2.4.3)
- 从
MailboxPropertiesConfiguration
中删除 @Configuration
。
- 将
@EnableConfigurationProperties(MailboxPropertiesConfiguration.class)
添加到MailboxProducer
我有以下配置CLass:
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
以及以下 class:
@Configuration
public class MailboxProducer extends AbstractConfiguration{
protected MailboxProducer(MailboxPropertiesConfiguration config) {
super(config.getHost());
}
}
我的问题是 config.getHost()
为空(其他属性也是),即使我有设置器 (@Data
)
我尝试删除 @ConfigurationProperties
并改用 @Value
但结果相同。
你能告诉我我做错了什么吗?
谢谢。 (我正在使用 Spring boot 2.4.3)
- 从
MailboxPropertiesConfiguration
中删除@Configuration
。 - 将
@EnableConfigurationProperties(MailboxPropertiesConfiguration.class)
添加到MailboxProducer