1. 问题
前一阵子遇到的问题 突然想起来没有写笔记 先记录下来
SpringBoot中使用 @ConfigurationProperties 注入对象 普通方法调用可以 在静态方法中调用的时候读取不到参数
@Component
@ConfigurationProperties(prefix = "constants.ftp")
public class FtpConfig
{
private static String host;
private static int port;
private static String user;
private static String password;
private static String uploadPath;
private static String outputPath;
public static String getXXX() {
return xxx;
}
public static void setXXX(String xxx) {
FtpConfig.xxx = xxx;
}
...
}
2. 原因
因为@ConfigurationProperties只会调用非静态的set方法
3. 解决方案
将set方法改为非静态
public static String getXXX() {
return xxx;
}
public void setXXX(String xxx) {
FtpConfig.xxx = xxx;
}
@ConfigurationProperties会根据配置文件的信息调用返回对象的set方法
切记:prefix必须全部为小写,set方法必须为public
参考资料: https://blog.csdn.net/sl1990129/article/details/107064360