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

一、错误场景:spring

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

二、错误缘由:this

由于Bean的构造器调用是在@Value属性赋值以前进行的,因此形成了属性尚未赋值,就被调用的状况。spa

三、解决方案:code

将构造器中须要使用的@Value属性做为构造器的参数,确保构造器中使用该属性以前,属性已经获得初始化orm

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

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

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

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

@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,问题解决了。class

相关文章
相关标签/搜索