application.properties配置项无法注入

427 阅读1分钟

一、问题描述

在SpringBoot框架中使用@ConfigurationProperties("xxx")注解无法注入application.properties文件中的配置的属性。

  • application.properties文件:
data.encryptor.tableName=rs_user,rs_dept
  • Java类:
@Component
@ConfigurationProperties("data.encryptor")
public class EncryptUtil{
    // 运行时为null
    private Set<String> tableName;
    
    // 以下省略方法
}

二、解决方案

这是由于类中缺少tableName属性的Setter方法,使用@ConfigurationProperties("xxx")注解注入属性配置时需要提供该属性Setter方法。

注意:@Value注解不需要Setter方法

  • application.properties文件:
data.encryptor.tableName=rs_user,rs_dept
  • Java类:
@Component
public class EncryptUtil{
    // 运行时为["rs_user","rs_dept"]
    @Value("${data.encryptor.tableName}")
    private Set<String> tableName;
    
    // 以下省略方法
}

三、总结

究其原因还是因为基础不牢固导致的,日积月累吧。