一、自定义配置属性类:
package cn.edu.tju.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "my.test")
public class EndPointProperty {
private String host;
private Integer port = 8080;
public String getHost() {
return this.host;
}
public void setHost(String host) {
this.host = host;
}
public Integer getPort() {
return this.port;
}
public void setPort(Integer port) {
this.port = port;
}
}
二、自定义属性校验器
package cn.edu.tju.config;
import java.util.regex.Pattern;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
public class MyPropertyValidator implements Validator {
final Pattern pattern = Pattern.compile("^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$");
@Override
public boolean supports(Class<?> type) {
return type == EndPointProperty.class;
}
@Override
public void validate(Object o, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "host", "host.empty");
ValidationUtils.rejectIfEmpty(errors, "port", "port.empty");
EndPointProperty properties = (EndPointProperty) o;
if (properties.getHost() != null
&& !this.pattern.matcher(properties.getHost()).matches()) {
errors.rejectValue("host", "Invalid host");
}
}
}
三、配置属性校验器bean
@Bean
public static Validator configurationPropertiesValidator() {
return new MyPropertyValidator();
}
四、在application.properties中进行配置
my.test.host=139.198.99.99
my.test.port=9988
如果违反校验规则,
my.test.host=139.198.9999.9999
my.test.port=9988
则程序启动时直接报错