加载配置文件
在某个FileUploader里,需要获取该配置,可使用@Value
注入:
@Component
public class FileUploader {
@Value("{storage.local.max-size:102400}")
int maxSize;
...
}
在另一个UploadFilter
中,因为要检查文件的MD5,同时也要检查输入流的大小,因此,也需要该配置:
多次引用同一个@Value
不但麻烦,而且@Value
使用字符串,缺少编译器检查,容易造成多处引用不一致(例如,把缺省值误写为100000
)。
假设我们在application.yml
中添加了如下配置:
storage:
local:
# 文件存储根目录:
root-dir: ${STORAGE_LOCAL_ROOT:/var/storage}
# 最大文件大小,默认100K:
# 是否允许空文件:
allow-empty: false
# 允许的文件类型:
可以首先定义一个Java Bean,持有该组配置:
保证Java Bean的属性名称与配置一致即可。然后,我们添加两个注解:
@Configuration
@ConfigurationProperties("storage.local")
public class StorageConfiguration {
}
这样一来,引入storage.local
的相关配置就很容易了,因为只需要注入StorageConfiguration
这个Bean,这样可以由编译器检查类型,无需编写重复的注解。
从下载练习:加载配置文件 (推荐使用快速下载)
Spring Boot提供了@ConfigurationProperties
注解,可以非常方便地把一段配置加载到一个Bean中。