Spring Boot Configuration Properties

@ConfigurationProperties is a feature in Spring Boot that allows you to bind external configurations to a Java class.

It maps property names to fields in a Java class, making it easy to manage external configurations.

So, we can use this Spring functionality if we want to set the properties into a Java class.


You’ll need at leas this dependency.


How to use Configuration Properties with a Java Pojo class

The properties can be specified from your application.properties files.

The annotated class can then be used to access the properties in your application code. This helps to separate the configuration from the implementation, making it easier to manage and maintain.

Here is a simple example of how you could use @ConfigurationProperties in a Spring Boot application:

If we have this property file:

app.name=The name of this app
app.description=This description of this app

We can set these properties in a Java class automatically. For that, you have to annotate the Java class with these two annotations:

  • @ConfigurationProperties
  • @Component

The prefix in ConfigurationProperties has to be equal to the prefix of the property.

@ConfigurationProperties(prefix = "app")
public class AppInfo {

    private String name;
    private String description;

    // set and get.. 
    public String toString() {
        return "AppInfo{" +
                "name='" + name + '\'' +
                ", description='" + description + '\'' +


Note how the property prefix is joined with the annotation and each property with the class attribute.

Spring Boot Configuration Properties

How to use Configuration Properties with a Spring Bean

This way is similar to the previous one we learned.

For example, for these properties:


In this example, AppConfig class is annotated with @ConfigurationProperties to specify that its fields should be populated with properties that have a prefix of “app.mail”.

The AppConfig class is a @Configuration class that defines a bean with the @Bean annotation.

The mailData() method returns an instance of MailData and is annotated with @ConfigurationProperties to specify that its fields should be populated with properties that have a prefix of “app.mail”.

public class AppConfig {

    @ConfigurationProperties(prefix = "app.mail")
    public MailData mailData() {
        MailData mailData = new MailData();
        return mailData;


Running both examples

You can then use the bean or the component in other parts of your application through dependency injection, for example:

public class SpringBootConfigurationPropertiesApplication {

    AppInfo appInfo;

    MailData mailData;

    public static void main(String[] args) {
        SpringApplication.run(SpringBootConfigurationPropertiesApplication.class, args);

    public void post() {

The output of that is:

AppInfo{name='The name of this app', description='This description of this app'}
MailData{hostName='host@mail.com', port=9000, from='mailer@mail.com'}


@ConfigurationProperties is a Spring annotation used to map external configuration properties to fields in a Java class, making it easy to get property values in your services.

This code is in GitHub

Hi! If you find my posts helpful, please support me by inviting me for a coffee :)

See also