Spring容器注入为null问题解决

给大家分享一个我最近遇到的一个坑

@ConfigurationProperties和@Value取到null,一开始以为是注入失败了,一顿操作后开始下载Spring源码开始跟着源码走一遍

原因不多说,直接说解决办法:

看网上说,如果使用的是@ConfigurationProperties(prefix = "xxx")注解进行自动装配,变量不能用static 进行修饰,给出的解释是 static 会在been注入之前把对象放在静态区

但是我测试的是变量可以使用静态修饰变量,但是该变量的get方法得使用static静态修饰,set方法是不可以使用静态修饰

原因可能是他在注入值的时候,可能是调用的set方法,在进行配置文件和实体类进行 变量 比对的时候,是用的set方法,把setName() 后边的Name拿出来,首字母小写变为name来进行和配置文件做比对,当然这只是我的猜想,你们感兴趣可以自己去翻代码

@Component
@ConfigurationProperties(prefix = "xxx")
public class VaccineConfig
{
    /** 名称 */
    private static String name;

    /** 版本 */
    private static String version;

    /** Get方法 */
    public static String getName() { return name; }

    /** Set方法 */
    public void setName(String name) { VaccineConfig.name = name; }

    /** Get方法 */
    public static String getVersion() { return version; }

    /** Set方法 */
    public void setVersion(String version) { VaccineConfig.version= version; }

}

还有一件事,

@Autowired取到的值为null,可以试试手动装配,参考以下链接
经验分享 程序员 微信小程序 职场和发展