Application Configuration with Spring Boot


This guide will introduce you to the various application configuration options that are present in Spring Boot. You will also learn how to create custom configuration for an application.

You will learn

  • What is application configuration?
  • Why do we need application configuration?
  • What is
  • What are some of the important things that can customized in
  • How do you externalize configuration using Spring Boot?
  • How can you add custom application properties using Spring Boot?
  • What is @ConfigurationProperties?
  • What are the advantages of using @ConfigurationProperties?

Free Courses - Learn in 10 Steps

Need for Application Configuration

Configuration for applications vary from one environment to another

  • You would want to connect to a different database or queues
  • You would want to connect with different services
  • You would want to configure less logging in production
  • You might want to have different custom configuration

Application Configuration with Spring Boot

Spring Boot allows you to configure your application configuration using a file named can reside anywhere in the classpath of the application.

In, we can use the “logging.level” prefix to set logging levels.


You can configure a log file by using logging.file property in The logging here would be in addition to the logging in console.


You can also configure the port to run the server on using server.port

server.port = 9080

For complete list of options refer spring documentation -

In this guide, we will create three services using proper URIs and HTTP methods:

Project Code Structure

Following screenshot shows the structure of the project we will create. Image

A few details:

  • - The Spring Boot Application class generated with Spring Initializer. This class acts as the launching point for application.
  • pom.xml - Contains all the dependencies needed to build this project.
  • - We will use this component to define application configuration using @ConfigurationProperties
  • - Example of a resource using @Value
  • - Configuration for application

Tools you will need

  • Maven 3.0+ is your build tool
  • Your favorite IDE. We use Eclipse.
  • JDK 1.8+

Complete Maven Project With Code Examples

Our Github repository has all the code examples -

Bootstrapping with Spring Initializr

Spring Initializr is great tool to bootstrap your Spring Boot projects.



As shown in the image above, following steps have to be done

  • Launch Spring Initializr and choose the following
    • Choose com.in28minutes.springboot.tutorial.basics.application.configuration as Group
    • Choose spring-boot-tutorial-basics-configuration as Artifact
    • Choose following dependencies
      • Web
      • DevTools
  • Click Generate Project.
  • Import the project into Eclipse. File -> Import -> Existing Maven Project.

Application Configuration using @Value

Let’s create a very simple example.

public class WelcomeResource {

	private String welcomeMessage;

	public String retrieveWelcomeMessage() {
		// Complex Method
		return welcomeMessage;


  • @Value("${welcome.message}") private String welcomeMessage; - Pick up the value for welcome.message from application configuration and assign it to this member variable.
  • @GetMapping("/welcome") public String retrieveWelcomeMessage() - Expose a simple service using the configuration

Let’s configure a value for welcome message in the

welcome.message=Welcome message from property file! Welcome to in28Minutes

When you launch http://localhost:8080/welcome, you would see a page with this message

Welcome message from property file! Welcome to in28Minutes

We can make the more creative by using other properties as variables too.
welcome.message=Welcome message from property file! Welcome to ${}

Spring Boot provides different ways of configuring your property values.

  • You can send in a program argument
    • –welcome.message=”SomethingElse”
  • You can use a different file as property file
    • –spring.config.location=classpath:/
  • You can configure an environment variable

@Value is the basic approach for application configuration using Spring.

Application Configuration using Type-safe Configuration Properties

The problem with @Value is that you would have your configuration values distributed through out your application. A better option would be to have a centralized approach.

You can define a configuration component using @ConfigurationProperties.

public class BasicConfiguration {
    private boolean value;
    private String message;
    private int number;

    public boolean isValue() {
        return value;

    public void setValue(boolean value) {
        this.value = value;

    public String getMessage() {
        return message;

    public void setMessage(String message) {
        this.message = message;

    public int getNumber() {
        return number;

    public void setNumber(int number) {
        this.number = number;



  • @Component @ConfigurationProperties("basic") - Defines that this java bean contains configuration properties. All property names will start with basic..
  • private boolean value - A boolean value. Can be configured as basic.value.
  • private String message - A String value. Can be configured as basic.message.

We would need to use the BasicConfiguration in a service to expose the values

private BasicConfiguration configuration;

public Map dynamicConfiguration() {
    // Not the best practice to use a map to store differnt types!
    Map map = new HashMap();
    map.put("message", configuration.getMessage());
    map.put("number", configuration.getNumber());
    map.put("key", configuration.isValue());
    return map;


  • @Autowired private BasicConfiguration configuration - Its very easy to use BasicConfiguration. Autowire it in when ever you need the value for a property from it.
  • @RequestMapping("/dynamic-configuration") public Map dynamicConfiguration() { - Define a simple service to expose the configured values.

The values can be configured in

basic.value: true
basic.message: Dynamic Message
basic.number: 100

When you browse to http://localhost:8080/dynamic-configuration, you see the following response.

{"number":100,"message":"Dynamic Message","key":true}

Image Image Image

Understand Type Safety

@ConfigurationProperties is type safe. If you configure any property with a value of an invalid type, the application fails at startup.

Below snippet shows the log when basic.number is assigned a non numberic value.



Binding to target [email protected]8545 failed:

    Property: basic.number
    Value: ABC
    Reason: Failed to convert property value of type [java.lang.String] to required type [int] for property 'number'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [int]


Update your application's configuration

Complete Code Example

Github repository has all the code examples -

Best Selling Udemy Courses

Image Image Image Image Image Image Image

Join 450,000 Learners and 30+ Amazing Courses

350,000 Learners are learning everyday with our Best Selling Courses : Spring Boot Microservices, Spring, Spring Boot, Web Services, Hibernate, Full Stack React, Full Stack Angular, Python, Spring Interview Guide, Java Interview, Java Functional Programming, AWS, Docker, Kubernetes, PCF, AWS Fargate and Azure

Do not know where to start your learning journey? Check out our amazing learning paths:
Learning Path 01 - Spring and Spring Boot Web Applications and API Developer,
Learning Path 02 - Full Stack Developer with Spring Boot, React & Angular,
Learning Path 03 - Cloud Microservices Developer with Docker and Kubernetes,
Learning Path 04 - Learn Cloud with Spring Boot, AWS, Azure and PCF and
Learning Path 05 - Learn AWS with Microservices, Docker and Kubernetes


85,000 Subscribers are learning from our Free Videos on YouTube : JSP Servlets, Spring, Spring Boot, Spring MVC, Hibernate, Eclipse, Maven, JUnit, Mockito, Full Stack - React, Full Stack - Angular, Docker, Kubernetes, AWS, AWS Fargate, PCF and Azure

Here are the recommend articles to read next : Spring Interview Questions, Spring Boot Interview Questions, Microservices, Hibernate, Spring Security, REST API with Spring Boot, Full Stack with React, SOAP Web Services, Exception Handling, Embedded Servers, Spring Data Rest, Spring vs Spring MVC vs Spring Boot, Building Web Application and Spring Data JPA.

You can checkout all our 100+ articles here - All Articles.


Related Posts

Docker Tutorial for Beginners - with Java and Spring Boot

Learn about Docker - What is Docker? Why Is Docker Popular? How to create Docker Image for a Java Spring Boot App?

Devops Tutorial | DevOps with Docker, Kubernetes and Azure DevOps

What is DevOps? How is it different from Agile? What are the popular DevOps Tools? What is the role of Docker, Kubernetes and Azure DevOps in DevOps. Let's get started with a simple usecase.

Deploy Java Spring Boot Applications to AWS, Azure, GCP with Docker and Kubernetes

In this article, we focus our attention on the cloud. How to learn the cloud and deploy Java Spring Boot Applications to AWS, Azure, GCP with Docker and Kubernetes?

Spring Boot Tutorials for Beginners

At in28Minutes, we are creating a number of tutorials with videos, articles & courses on Spring Boot for Beginners and Experienced Developers. This resources will help you learn and gain expertise at Spring Boot.

Microservices with Spring Boot and Java - Part 1 - Getting Started

Let's learn the basics of microservices and microservices architectures. We will also start looking at a basic implementation of a microservice with Spring Boot. We will create a couple of microservices and get them to talk to each other using Eureka Naming Server and Ribbon for Client Side Load Balancing. In part 1 of this series, lets get introduced to the concept of microservices and understand how to create great microservices with Spring Boot and Spring Cloud.

20+ Spring Boot Projects with Code Examples

At in28Minutes, we have created more than 20 projects with code examples on Github. We have 50+ articles explaining these projects. These code examples will you learn and gain expertise at Spring Boot.

REST API Best Practices - With Design Examples from Java and Spring Web Services

Designing Great REST API is important to have great microservices. How do you design your REST API? What are the best practices?

Index - 500+ Videos

At in28Minutes, we are creating a number of tutorials with videos, articles & courses on Spring Boot for Beginners and Experienced Developers. Here's a list of video tutorials and courses for you

Creating Spring Boot and React Java Full Stack Application with Maven

This guide helps you create a Java full stack application with all the CRUD (Create, Read, Update and Delete) features using React as Frontend framework and Spring Boot as the backend REST API. We use Maven as the build tool.

Creating a SOAP Web Service with Spring Boot Starter Web Services

Let's learn how to create a SOAP Web Service with Spring Boot Starter Web Services. We will take a Contract First approach by definining an XSD and exposing a WSDL from it.