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


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

  • 相关阅读:
    Java8新特性 -- Lambda基础语法
    全角和半角的区别
    java super关键字
    数字格式化
    随机抽奖小程序
    获取指定范围的不重复的随机数
    Java Math类学习
    Java 随机数的产生
    JAVA Color类
    Static和static block(静态块)的用法
  • 原文地址:https://www.cnblogs.com/zhoujl-5071/p/10371321.html
Copyright © 2020-2023  润新知