解决springboot项目中@Value注解参数值为null的问题

时间:2021-07-24 10:50:42

1、错误场景:

springboot项目中在.properties文件(.yml)文件中配置了属性值,在Bean中使用@Value注解引入该属性,Bean的构造器中使用该属性进行初始化,此时有可能会出现属性值为null,造成初始化程序的错误

2、错误原因:

因为Bean的构造器调用是在@Value属性赋值之前进行的,所以造成了属性还没有赋值,就被调用的情况。

3、解决方案:

将构造器中需要使用的@Value属性作为构造器的参数,确保构造器中使用该属性之前,属性已经得到初始化

理论先行,代码跟上(^_^)

(1).yml配置文件中配置系统参数值 file.upload-dir

file:
upload-dir: /Users/lc/temp/

(2)FileStorageService 的构造器需要使用使用 file.upload-dir 属性

@Service
public class FileStorageService {
  /* @Value("${file.upload-dir}")
    private String uploadDir; */
public FileStorageService(@Value("${file.upload-dir}") String uploadDir) throws ServiceException {
this.fileStorageLocation = Paths.get(uploadDir).toAbsolutePath().normalize();
try {
Files.createDirectories(this.fileStorageLocation);
} catch (Exception e) {
throw new Exception(e);
}
}
}

(3)now,问题解决了。