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、应用

2.1、引入依赖

  <!-- @ConfigurationProperties注解依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

引入依赖的原因(官网说明https://docs.spring.io/spring-boot/docs/2.0.7.RELEASE/reference/html/configuration-metadata.html#configuration-metadata-annotation-processor

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

2.2、Properties配置文件

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

2.3、配置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.4、如何获取Properties的值

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值