Spring - Injecter une valeur dans des variables statiques
Spring ne permet pas d'injecter de la valeur dans des variables statiques, par exemple:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class GlobalValue {
@Value("${mongodb.db}")
public static String DATABASE;
}
Si vous imprimez lesGlobalValue.DATABASE, unnull sera affiché.
GlobalValue.DATABASE = null
Solution
Pour y remédier, créez un «setter statique» pour attribuer la valeur injectée à la variable statique. Par exemple :
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;
}
}
Sortie
GlobalValue.DATABASE = "mongodb database name"