作用
@ConfigurationProperties
注解主要作用就是将prefix
属性指定的前缀配置项的值绑定到这个Bean上,默认情况下需要和@Component
或者@Configuration
一起使用才能生效
使用范围:可以用于类,方法上。
定义
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface ConfigurationProperties {
@AliasFor("prefix")
String value() default "";
@AliasFor("value")
String prefix() default "";
boolean ignoreInvalidFields() default false;
boolean ignoreUnknownFields() default true;
}
参数
value
与prefix
功能相同,指的是将指定的前缀属性绑定到这个Bean上的属性。
ignoreInvalidFields
: 默认false
表示绑定到此对象时应忽略无效字段。一般字段类型错误(或无法细路制转换为正确类型)。例如:实体类中定义的可以是一个Boolean类型,但是配置项的值却是日期。
ignoreUnknownFields
: 默认为true
,表示绑定到此对象时应忽略实体类中不存在的字段,例如配置项中可能有一个同样前缀的配置,但是实体类中没有对应的属性。
使用
1、用在类上
在项目的application.properies文件中添加以下配置项
demo.datasource.config.host=127.0.0.1
demo.datasource.config.port=3306
demo.datasource.config.database=test
demo.datasource.config.username=root
demo.datasource.config.pwd=123
@Component
@Data
@ConfigurationProperties(prefix = "demo.datasource.config")
public class DataSourceProperties {
private String host;
private String port;
private String database;
private String pwd;
private String username;
@Override
public String toString() {
return "DataSourceProperties{" +
"host='" + host + '\'' +
", port='" + port + '\'' +
", database='" + database + '\'' +
", pwd='" + pwd + '\'' +
", username='" + username + '\'' +
'}';
}
}
运行以下测试程序
@SpringBootTest
class DemoApplicationTests {
@Autowired
private DataSourceProperties dataSourceProperties;
@Test
void contextLoads() {
System.out.println(dataSourceProperties);
}
}
运行输出结果为:
DataSourceProperties{host='127.0.0.1', port='3306', database='test', pwd='123', username='root'}
从输出结果可以看出,DataSourceProperties
类已经将配置文件中以demo.datasource.config
为前缀的相关配置都写入到类对应的属性中。
2、用在方法上
@Getter
@Setter
public class DataSourceProperties {
private String host;
private String port;
private String database;
private String pwd;
private String username;
@Override
public String toString() {
return "DataSourceProperties{" +
"host='" + host + '\'' +
", port='" + port + '\'' +
", database='" + database + '\'' +
", pwd='" + pwd + '\'' +
", username='" + username + '\'' +
'}';
}
}
@Configuration
public class DataSourceConfigure {
@Bean
@ConfigurationProperties(prefix = "demo.datasource.config")
public DataSourceProperties dataSourceProperties(){
return new DataSourceProperties();
}
}
@SpringBootTest
class DemoApplicationTests {
@Autowired
private DataSourceProperties dataSourceProperties;
@Test
void contextLoads() {
System.out.println(dataSourceProperties);
}
}
运行输出结果为:
DataSourceProperties{host='127.0.0.1', port='3306', database='test', pwd='123', username='root'}
从输出结果可以看出,DataSourceProperties
类已经将配置文件中以demo.datasource.config
为前缀的相关配置都写入到类对应的属性中。
原创文章,作者:jiafegn,如若转载,请注明出处:https://www.techlearn.cn/archives/163