加载配置文件

    在某个FileUploader里,需要获取该配置,可使用@Value注入:

    1. @Component
    2. public class FileUploader {
    3. @Value("{storage.local.max-size:102400}")
    4. int maxSize;
    5. ...
    6. }

    在另一个UploadFilter中,因为要检查文件的MD5,同时也要检查输入流的大小,因此,也需要该配置:

    多次引用同一个@Value不但麻烦,而且@Value使用字符串,缺少编译器检查,容易造成多处引用不一致(例如,把缺省值误写为100000)。

    假设我们在application.yml中添加了如下配置:

    1. storage:
    2. local:
    3. # 文件存储根目录:
    4. root-dir: ${STORAGE_LOCAL_ROOT:/var/storage}
    5. # 最大文件大小,默认100K:
    6. # 是否允许空文件:
    7. allow-empty: false
    8. # 允许的文件类型:

    可以首先定义一个Java Bean,持有该组配置:

    保证Java Bean的属性名称与配置一致即可。然后,我们添加两个注解:

    1. @Configuration
    2. @ConfigurationProperties("storage.local")
    3. public class StorageConfiguration {
    4. }

    这样一来,引入storage.local的相关配置就很容易了,因为只需要注入StorageConfiguration这个Bean,这样可以由编译器检查类型,无需编写重复的注解。

    从下载练习:加载配置文件 (推荐使用快速下载)

    Spring Boot提供了@ConfigurationProperties注解,可以非常方便地把一段配置加载到一个Bean中。