SpringBoot - @PropertySource注解使用详解
SpringBoot默认能够读取resources目录下的配置文件,当我们的配置文件不在SpringBoot默认能够读取的目录下怎么办?@PropertySource,可以加载指定的、非application.properties文件的、未在SpringBoot默认加载目录的属性文件(*.properties)到Spring容器中,@PropertySource目前还不支持对YML配置的读取。..
写在前面
SpringBoot默认能够读取resources目录下的配置文件,当我们的配置文件不在SpringBoot默认能够读取的目录下怎么办?
@PropertySource,可以加载指定的、非application.properties文件的、未在SpringBoot默认加载目录的、自定义的属性文件(*.properties)到Spring容器中,@PropertySource目前还不支持对YML配置的读取。
加载目录
当我们创建一个SpringBoot项目时,默认在resources目录下就有一个application.properties文件,可以在该文件中进行相关配置。但是在SpringBoot中默认会从四个地方查找application.properties文件。
①。项目根目录下的config目录下
②。项目根目录下
③。resources目录下的config目录下
④。resources目录下
@PropertySource注解
例:在resource目录下,自定义了一个mallx.properties文件,根据上面的描述可知,该文件不会自动别加载:
mallx.spu.title=大学生白色丝袜
mallx.spu.price=7500
mallx.spu.stock=999
可以使用@PropertySource + @Value 或者 @PropertySource + @ConfigurationProperties,这两种方式完成配置文件的加载和读取。
方式一:@PropertySource + @Value组合使用
@Component
@PropertySource("classpath:mallx.properties")
public class MallxSpu {
@Value("${mallx.spu.title}")
private String title;
@Value("${mallx.spu.price}")
private Long price;
@Value("${mallx.spu.stock}")
private Integer stock;
}
方式二:@PropertySource 和 @ConfigurationProperties组合使用,使用SpringBoot类型安全的属性注入策略进行配置文件的加载。当配置的属性非常多的时候,采用@Value比较繁琐,引入@ConfigurationProperties注解,并配置了属性的前缀,Spring会自动将Spring容器中对应的数据注入到对象对应的属性中。
@Component
@PropertySource("classpath:mallx.properties")
@ConfigurationProperties(prefix = "mallx.spu")
public class MallxSpu {
private String title;
private Long price;
private Integer stock;
}
更多推荐
所有评论(0)