一切的配置都是为了取值,Spring Boot提供了几种取值的方式?
@ConfigurationProperties
这个注解用于从配置文件中取值,支持复杂的数据类型,但是不支持 SPEL 表达式。
该注解中有一个属性 prefix ,用于指定获配置的前缀,毕竟配置文件中的属性很多,也有很多重名的,
必须用一个前缀来区分下。
标注在实体类上
这种方式用于从实体类上取值,并且赋值到对应的属性。使用如下:
/**
* @Component :注入到IOC容器中
* @ConfigurationProperties:从配置文件中读取文件
*/
@Component
@ConfigurationProperties(prefix = "userinfo")
@Data
@ToString
public class UserInfo {
private String name;
private Integer age;
private Boolean active;
private Map<String,Object> map;
private Date createdDate;
private List<String> hobbies;
}
标注在配置类中的方法上
标注在配置类上的方法上,同样是从配置文件中取值赋值到返回值的属性中。使用如下:
/**
* @Bean : 将返回的结果注入到IOC容器中
* @ConfigurationProperties :从配置文件中取值
* @return
*/
@ConfigurationProperties(prefix = "userinfo")
@Bean
public UserInfo userInfo(){
return new UserInfo();
}
总结
@ConfigurationProperties 注解能够很轻松的从配置文件中取值,优点如下:
@Value("${userinfo.name}")
private String UserName;
SpringBoot工程中读取配置文件里面的属性。
读取配置文件中的属性,主要有六种方式,分别如下所示:
第一种方式:使用【@Value】注解,读取指定属性。
第二种方式:使用【@ConfigurationProperty】注解,全量读取属性。
第三种方式:使用【@PropertySource注解 + Environment对象】。
第四种方式:使用【@PropertySource注解 + @ConfigurationProperties注解】。
第五种方式:使用【@PropertySource注解 + @Value注解】。
第六种方式:使用【PropertiesLoaderUtils】工具类。
具体每一种方式怎么使用,可以参考这位博主的文章:
https://blog.csdn.net/qq_39826207/article/details/127318092