【源码窥探】Spring5注解配置类(版本5.2.X)

版权声明:如有转载-请加微信457556886告知下就可以 知识都是分享的 https://blog.csdn.net/wolf_love666/article/details/90905469

源码如下:
1、ConfigurationPropertiesAutoConfiguration

package org.springframework.boot.autoconfigure.context;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 凡是带有
 * {@ConfigurationProperties} beans实例开启自动配置. 
 * 自动绑定和校验带有{@ConfigurationProperties}.注解的bean实例
 */
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties
public class ConfigurationPropertiesAutoConfiguration {

}

2、ConfigurationProperties

package org.springframework.boot.context.properties;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;

/**
 * 外部配置注解  
 * 如果你想要绑定一些外部属性(例如properties文件)添加这个到类定义或者在@Configuration注解修饰的类中的@Bean修饰的方法
注意:与@Value注解修饰不同的是,SpEL表达式不能获取到,因为是外部参数传入的。
 */
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {

	/**
	 * 属性名字的前缀对于绑定到这个对象是有效的。与 {prefix()}作用相同。
	 *  被一个或者多个点定义的前缀也是有效的,例如这种形式{ "acme.system.feature"}
	 * 返回绑定的这个属性名字前缀
	 */
	@AliasFor("prefix")
	String value() default "";

	/**
       与上面作用相同
	 */
	@AliasFor("value")
	String prefix() default "";

	/**
	当绑定到这个对象,无效的属性应该被忽略
	无效意味着在绑定的过程中,类型错误的属性或者不能被转化为正确的类型
    返回默认值false
	 */
	boolean ignoreInvalidFields() default false;

	/**
	当绑定到这个对象,未知的属性(错误的属性)应该被忽略,不在配置中的
	返回默认值true
	 */
	boolean ignoreUnknownFields() default true;

}

3、

猜你喜欢

转载自blog.csdn.net/wolf_love666/article/details/90905469