Spring 静态字段中注入值

1.介绍

如何使用 Spring 将值从 Java 属性文件注入到静态字段。

2.问题

application.proerties中添加了自定义属性

name=注入静态字段

将值注入到一个实例变量中。

通常可以通过在实例字段上使用 @Value 注释来完成:

@Value("${name}")
private String name;

但是,将其应用于静态字段时,值会是 null:

@Value("${name}")
private static String NAME_NULL;

因为 Spring 不支持静态字段上的 @Value。

3.解决

首先,声明要注入 NAME_STATIC 的静态变量。

之后,将创建一个名为 setNameStatic 的 setter 方法并使用 @Value 注释对其进行注释:

@RestController
public class PropertyController {
    
    


    private static String NAME_STATIC;

    @Value("${name}")
    public void setNameStatic(String name){
    
    
        PropertyController.NAME_STATIC = name;
    }
}

PropertyController,它是一个 RestController,正在被 Spring 初始化。

Spring 会搜索 Value 注解的字段和方法。

Spring 使用依赖注入在找到 @Value 注解时填充特定值。 但是,它不是将值传递给实例变量,而是传递给隐式 setter。 然后这个 setter 处理我们的 NAME_STATIC 值的填充。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/niugang0920/article/details/119530082