Spring 是不允许对静态变量进行直接注入的。
例如下面的代码:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class GlobalValue {
@Value("${mongodb.db}")
public static String DATABASE;
}
上面的代码直接运行的结果为:
GlobalValue.DATABASE = null
解决方案
虽然我们不能直接对静态变量进行直接注入,但是我们可以创建一个非静态的 Setter 方法。
通过上面的非静态方法来对静态变量进行注入。
代码如下:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class GlobalValue {
public static String DATABASE;
@Value("${mongodb.db}")
public void setDatabase(String db) {
DATABASE = db;
}
}
上面的程序将会输出为:
GlobalValue.DATABASE = "mongodb database name"
通过上面的代码可以完成在 Spring 中对静态变量的注入。