本文共 1808 字,大约阅读时间需要 6 分钟。
@Target({ ElementType.TYPE, ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ConfigurationProperties { @AliasFor("prefix") String value() default ""; @AliasFor("value") String prefix() default ""; boolean ignoreInvalidFields() default false; boolean ignoreUnknownFields() default true;}
my.bean.load=truemy.bean.id=1my.bean.ip=192.168.3.1
@Component@ConfigurationProperties("my.bean")public class MyProperties { private String id; private String ip; private String load; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getLoad() { return load; } public void setLoad(String load) { this.load = load; } @Override public String toString() { return "MyProperties{" + "id='" + id + '\'' + ", ip='" + ip + '\'' + ", load='" + load + '\'' + '}'; }}
ConfigurationProperties通过BeanPostProcessor的后置处理来实现
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { bind(ConfigurationPropertiesBean.get(this.applicationContext, bean, beanName)); return bean;}
privateboolean bind(DataObjectPropertyBinder propertyBinder, Bean bean, BeanSupplier beanSupplier, Context context) { boolean bound = false; // 所有属性 for (BeanProperty beanProperty : bean.getProperties().values()) { bound |= bind(beanSupplier, propertyBinder, beanProperty); context.clearConfigurationProperty(); } return bound;}
转载地址:http://kkawb.baihongyu.com/