简介
在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;
}
最后
代码开发还需细心耐心, 一个粗心小问题最是折磨人, 希望大家少踩坑