1. Overview

In this tutorial, we’ll see how to inject a value to a static field with Spring.

2. Problem

To begin with, let’s imagine that we set a property to a properties file:

name = Inject a value to a static field

Afterward, we want to inject its value to an instance variable.

That usually can be done by using the @Value annotation on an instance field:

private String name;

So, we may want to use @Value to inject some value to a static field:

public class StaticPropertyHolder {

    private static String STATIC_NAME_INJECTED_ON_FIELD;

    public static String getStaticNameInjectedOnField() {

However, when we try to apply it to a static field, we’ll find that it will still be null:


That’s because Spring doesn’t support @Value on static fields.

Next, let’s figure out how to use the @Value annotation to inject a value to a static field.

3. Solution

First, let’s declare a new private static variable with the corresponding getter and setter:

private static String STATIC_NAME;

public void setStaticName(String name) {
    STATIC_NAME = name;

public static String getStaticName() {
    return STATIC_NAME;

As we can see, we annotate the setter method with the @Value annotation.

This time, the expected value gets injected:

assertEquals("Inject a value to a static field", StaticPropertyHolder.getStaticName());

Spring uses dependency injection to populate the specific value when it finds the @Value annotation. However, instead of handing the value to the instance variable, it’s handed to the implicit setter instead. This setter then handles the population of our STATIC_NAME value.

4. Conclusion

In this short article, we’ve looked at how to inject a value from a properties file into a static variable. The key takeaway is using @Value on the setter method rather than on the static field itself.

As always, the code is available over on GitHub.

Course – LS (cat=Spring)

Get started with Spring and Spring Boot, through the Learn Spring course:

res – REST with Spring (eBook) (everywhere)
Inline Feedbacks
View all comments
Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.