SpringBoot读取Properties配置文件

在SpringBoot中读取Properties配置文件信息,一般使用@Value和@ConfigurationProperties注解。

1、@Value/@ConfigurationProperties注解

1.1、@Value注解

       @Value不能在任何Spring管理的Bean中使用,因为@Value本身是通过AutowiredAnnotationBeanPostProcessor实现的,它是BeanPostProcessor接口的实现类,因此任何BeanPostProcessor和BeanFactoryPostProcessor的子类中都不能使用@Vaule类注入属性,因为那时候@Value还没有被处理。
       @Value注解支持SPEL表达式,如果属性不存在,可以为其提供一个默认值

@Value("${custom.filesPath}")
private String filesPath;

1.2、@ConfigurationProperties注解

        在使用@ConfigurationProperties注解的类的时候,自动回将“-”或者“_”去掉,转换为java命名规范,如将context-path转换为contextPath。

【注意】

         @Value与@ConfigurationProperties的功能差不多,建议是@ConfigurationProperties注解,因为它能将一组属性统一管理。@Value的优点是支持SPEL表达式,但是SPEL表达式时把双刃剑,不容易调试和重构。

2、应用

我们这里就以配置上传文件的配置信息在application.yml中

2.1、Properties配置文件

ly:
  upload:
    allowTypes: #配置上传文件类型
    - image/jpeg
    - image/png
    - image/bmp
    baseUrl: http://image.wzy.com/

2.2、配置Properties的bean

/**
 * 读取上传配置文件信息
 */
@Data
@ConfigurationProperties(prefix = "ly.upload")
@Component
public class UploadProperties {

    private String baseUrl;//上传文件的基本路径
    private List<String> allowTypes; //上传文件类型
}

@ConfigurationProperties(prefix = "ly.upload") 这个注解,可以使属性文件中的值和类中的属性对应起来。
在spring boot中除了使用这个注解读取属性文件值外,还可以是用@Value注解。

@Value("{ly.upload.baseUrl}") 
private String baseUrl

【注意】推荐使用@ConfigurationProperties的方式。

2.3、如何获取Properties的值

一般是在controller或者service中获取相关的值

   //注入Properties的配置类
    @Autowired
    private UploadProperties prop;
  prop.getBaseUrl();//获取文件上传的url
   List<String> allowTypes = prop.getAllowTypes();//获取上传文件类型

猜你喜欢

转载自blog.csdn.net/u013089490/article/details/84102269