解決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

相關文章
相關標籤/搜索