簡介
在spring項目的yml配置文件中新加了一個自定義屬性,結果在Global全局配置中獲取不到值, 經過兩個多小時, 踩坑發現是粗心大意造成的
相關代碼
# 項目相關配置
project:
# 名稱
name: project name
# 版本
version: 1.1.0
# 文件路徑前綴
filePrefix: http://localhost:8080
/**
* 全局配置類
* @author admin
*/
@Component
@ConfigurationProperties(prefix = "project")
public class Global
{
/** 名稱 */
private static String name;
/** 版本 */
private static String version;
/** 文件路徑前綴 */
private static String filePrefix;
public static String getName()
{
return name;
}
public void setName(String name)
{
Global.name = name;
}
public static String getVersion()
{
return version;
}
public void setVersion(String version)
{
Global.version = version;
}
public static String getFilePrefix()
{
return filePrefix;
}
public static void setFilePrefix(String filePrefix)
{
Global.filePrefix = filePrefix;
}
}
期間我用IDE Generate -> getter setter生成 filePrefix 的get,set方法, 坑就在這了, 常規思維會認爲這樣沒錯, 但我忽視 filePrefix是一個靜態變量, setter方法靜態的spring無法自動注入值.
所以這裏應該把setFilePrefix方法的static去掉
public void setFilePrefix(String filePrefix)
{
Global.filePrefix = filePrefix;
}
最後
代碼開發還需細心耐心, 一個粗心小問題最是折磨人, 希望大家少踩坑