Spring Boot – DevTools

Last Updated : 08 Jan, 2024
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow

Spring Boot provides DevTools, a module designed to ease your development process, it improves the experience of developing applications resulting in optimising the developer’s productivity for building exceptional software.

It aims to reduce development time, by intelligently detecting code changes to auto-recompile your code reducing the need to manually restart your application.

Spring Boot DevTools offers many other development-time features listed below, one among them is explained above as auto-recompilation of code:

  • Property DefaultstoAutomatic Restart
  • Live Reload
  • Global Settings
  • Remote Debug Tunneling
Working of Spring Boot - DevTools

Working of Spring Boot – DevTools

Note: It is important to understand that the ‘DevTools’ is not an IDE plugin, nor does it require that you should use a specific IDE.

1. DevTools Configuration in Spring Boot

There are a few configurations required to use DevTools in your Spring Boot Application

1.1 Spring Boot Devtools Dependency

For Maven build automation tools dependency is-

XML




<!--Maven pom.xml-->
 
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <scope>runtime</scope>
</dependency>


For Gradle build automation tools dependency is-

dependencies {     compile("org.springframework.boot:spring-boot-devtools")   }  
OR
dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") }

1.2 Application Properties Settings for Spring Boot DevTools

Some configurations are available for application properties files to use Spring Boot DetTools

1.2.1 Toggle DevTools

It can be used to customize the detection of classpath changes to trigger auto restart if your Spring Boot Application

spring.devtools.restart.enabled=true

1.2.2 Exclude Resources from DevTools

It can be used to specify certain resources that will excluded to trigger a restart of your Spring Boot Application.

spring.devtools.restart.exclude=resources/**,web-inf/**

for the above code ‘resources’ and ‘web-inf’ resources are excluded

1.2.3 Enable/Disable LiveReloader for DevTools

To customize the use of LiveReloader use this configuration

 spring.devtools.livereload.enabled=true/false

1.3 Verify Spring Boot DevTools Configuration

On adding DevTools dependencies, the word ‘devtools’ appears alongside your project name.

The below images depict that the project has dev tools in a folder structure and Spring Boot Dashboard.

Folder Structure demonstrating DevTools is enabled in your project

Boot Dashboard in STS

Note:

  1. DevTools is neither a plugin nor an IDE-specific functionality, it works equally well in the STS ( Spring Tool Suite ), IntelliJ IDEA, and also Netbeans. 
  2. DevTools were built only for development-specific purposes, it is very smart enough that it disables itself when the application is deploying in a production setting.

2. Usage of Spring Boot DevTools

DevTools provides the Spring Boot developers with some development time tools that ease the development process. Some of these important workings are as follows-

2.1 Automatic application restart

With DevTools when we make changes to Java code or properties file, the application gets updated with new changes. It monitors for changes and automatically restarts the application. A few more points regarding automatic restart are listed.

  • With the DevTools in the application’s classpath, the application is loaded in two different class loaders in the Java Virtual Machine.
  • One class loader contains all the dependencies ( Libraries ) that applications need. These aren’t likely to change often.
  • The second class loader contains your actual Java code, property files, etc particularly in ( src/main/ path ) which are likely to change frequently.
  • On detecting a change, DevTools reloads only above the class loader by restarting the Spring application context and leaving another class loader, JVM intact.
  • This will help reduce the amount of time to start the application.
Console

Console

Global setting config for Spring Boot DevTools

Devtools provides a way to configure global settings that are not coupled with any application.

  • This file is named .spring-boot-devtools.properties and is located at $HOME.
  • If it is not configured manually, then defaults will be used by DevTools automatically.
Console

Console

Note: On automatic application restart, the changes to dependencies won’t be available. Because the respective class loader isn’t automatically reloaded. Therefore, after making the changes to dependencies, you have manually restart the application to get those changes in effect.

2.2 Automatic disable of template caches project

Spring Boot offers various template options like Thymeleaf, Groovy, FreeMarker, etc. These templates are configured to automatically cache the results of the template parsing. So, there is no need for them to be reparsed with every request that they serve.

Cached templates make it difficult to make the changes to the templates while the application is running and see the desired changes after refreshing the browser. Even after applying the changes, the cached template will still be in use until you restart the application.

Optimisation by DevTools for templates is listed:

  • This makes the Cached templates poor from the development perspective.
  • DevTools helps us with this by automatically disabling all template caching.
  • Due to this, your applied changes will now reflect on your templates after refreshing the browser.

Note

  1. You can additionally turn on/off caching of templates by specifying ‘spring.thymeleaf.cache=true/false‘ in the ‘application.properties’ file.
  2. You can also override other properties as well in the same above file.

2.3 Spring Boot Devtools as Live Reloader Server

If we have made some changes to the code and try to save it, then we have to click the refresh button on the browser each time to see its effect. This process automatically becomes time-consuming. It is always useful to witness the results in the browser and skip the refreshing of the browser again and again to reduce the development time.

The solution provided by Spring Boot DevTools is listed:

  • DevTools relieves us by skipping this cumbersome work for you.
  • When we embed and use DevTools, it automatically enables a ‘LiveReload’ server along with your application.
  • LiveReload server isn’t of much use, but it is useful when coupled with a corresponding LiveReload browser plugin.
  • This makes your browser automatically refresh when the changes are made to the files that are served directly or indirectly by your browser. Examples – Template engines, CSS stylesheets, JavaScript, and so on.
  • LiveReload has browser plugins for browsers like Google Chrome, Firefox, and Safari.
  • Internet Explorer and Edge browsers don’t have LiveReload browser plugins.
Console

Console

2.4 H2 Console

Your application additionally may require a database. Spring Boot offers you a very essential feature of an embedded H2 database which is very helpful for development purposes.

  • When we add an H2 database dependency in the application build, DevTools will automatically enable an H2 console.
  • You can access this console from your web browser itself.
  • This helps us to get an insight or overview of the data that is used or handled by the application.

To access this console, you have to simply point your web browser to – http://localhost:8080/h2-console.

Conclusion

In this article, we have discussed the below-mentioned usage of Spring Boot Devtools.

  • Automatic application restart
  • Automatic disable of template cache
  • Live Reloader Server
  • Auto-Enable H2 Console


Previous Article
Next Article

Similar Reads

Hot Reload with Spring Boot DevTools
Hot reloading allows developers to see changes made to their application in real-time without restarting the server. In Spring Boot, this is achieved through Spring Boot DevTools. This tool significantly enhances development by reducing the time required to see changes in the application. Hot Reload with Spring Boot DevToolsSpring Boot DevTools is
3 min read
Difference Between Spring Boot Starter Web and Spring Boot Starter Tomcat
Spring Boot is built on the top of the spring and contains all the features of spring. And is becoming a favorite of developers these days because of its rapid production-ready environment which enables the developers to directly focus on the logic instead of struggling with the configuration and setup. Spring Boot is a microservice-based framework
3 min read
Spring Boot – Handling Background Tasks with Spring Boot
Efficiently handling background tasks with Spring Boot is important for providing a smooth user experience and optimizing resource utilization. Background tasks refer to operations that are performed asynchronously or in the background, allowing the main application to continue processing other requests. In a Spring Boot application, background tas
5 min read
Spring Boot – Using Spring Boot with Apache Camel
Apache Camel and Spring Boot are two powerful frameworks that can be seamlessly integrated to build robust, scalable, and efficient applications. Apache Camel is an open-source integration framework that provides an extensive range of components and connectors, enabling developers to integrate different systems, APIs, and applications. It simplifie
5 min read
Spring Boot - Spring JDBC vs Spring Data JDBC
Spring JDBC Spring can perform JDBC operations by having connectivity with any one of jars of RDBMS like MySQL, Oracle, or SQL Server, etc., For example, if we are connecting with MySQL, then we need to connect "mysql-connector-java". Let us see how a pom.xml file of a maven project looks like. C/C++ Code &lt;?xml version=&quot;1.0&quot; encoding=
4 min read
Spring vs Spring Boot vs Spring MVC
Are you ready to dive into the exciting world of Java development? Whether you're a seasoned pro or just starting out, this article is your gateway to mastering the top frameworks and technologies in Java development. We'll explore the Spring framework, known for its versatility and lightweight nature, making it perfect for enterprise-level softwar
8 min read
Java Spring Boot Microservices - Develop API Gateway Using Spring Cloud Gateway
The API Gateway Pattern in some cases stands for “Backend for frontend”. It is basically the entry gate for taking entry into any application by an external source. The pattern is going on in a programmer’s mind while they are making the client’s application. It acts as a medium between the client applications and microservices. For example-Netflix
4 min read
Spring Boot | How to access database using Spring Data JPA
Spring Data JPA is a method to implement JPA repositories to add the data access layer in applications easily. CRUD stands for create, retrieve, update, delete which are the possible operations which can be performed in a database. In this article, we will see an example of how to access data from a database(MySQL for this article) in a spring boot
4 min read
How to Create a Spring Boot Project in Spring Initializr and Run it in IntelliJ IDEA?
Java language is one of the most popular languages among all programming languages. There are several advantages of using the java programming language, whether for security purposes or building large distribution projects. One of the advantages of using Java is that it tries to connect every concept in the language to the real world with the help
3 min read
How to Create and Setup Spring Boot Project in Spring Tool Suite?
Spring Boot is built on the top of the spring and contains all the features of spring. And is becoming a favorite of developers these days because of its rapid production-ready environment which enables the developers to directly focus on the logic instead of struggling with the configuration and setup. Spring Boot is a microservice-based framework
3 min read
How to Run Your First Spring Boot Application in Spring Tool Suite?
Spring Tool Suite (STS) is a java IDE tailored for developing Spring-based enterprise applications. It is easier, faster, and more convenient. And most importantly it is based on Eclipse IDE. STS is free, open-source, and powered by VMware. Spring Tools 4 is the next generation of Spring tooling for the favorite coding environment. Largely rebuilt
3 min read
How to Make a Project Using Spring Boot, MySQL, Spring Data JPA, and Maven?
For the sample project, below mentioned tools got used Java 8Eclipse IDE for developmentHibernate ORM, Spring framework with Spring Data JPAMySQL database, MySQL Connector Java as JDBC driver.Example Project Using Spring Boot, MySQL, Spring Data JPA, and Maven Project Structure: As this is getting prepared as a maven project, all dependencies are s
4 min read
Java Spring Boot Microservices – Integration of Eureka and Spring Cloud Gateway
Microservices are small, loosely coupled distributed services. Microservices architecture evolved as a solution to the scalability, independently deployable, and innovation challenges with Monolithic Architecture. It provides us to take a big application and break it into efficiently manageable small components with some specified responsibilities.
5 min read
What's New in Spring 6 and Spring Boot 3?
Spring and Spring Boot are two of the most popular Java frameworks used by developers worldwide. The Spring team is continuously working on improving and enhancing the frameworks with each new major release. Spring 6 and Spring Boot 3 are expected to bring in significant new features and changes that will further boost development with these techno
5 min read
How to Integrate Keycloak with Spring Boot and Spring Security?
Keycloak is Open Source Identity and Access Management (IAM) solution developed by Red Hat. By using this you can add authentication to applications and secure services with minimum effort. No need to deal with storing users or authenticating users. Keycloak provides user federation, strong authentication, user management, fine-grained authorizatio
2 min read
Java Spring Boot Microservices - Integration of Eureka, Feign & Spring Cloud Load Balancer
Microservices are small, loosely coupled distributed services. Microservices architecture evolved as a solution to the scalability, independently deployable, and innovation challenges with Monolithic Architecture. It provides us to take a big application and break it into efficiently manageable small components with some specified responsibilities.
13 min read
Java Spring Boot Microservices - Client Side Load Balancing with Spring Cloud LoadBalancer
Spring Cloud is a collection of projects like load balancing, service discovery, circuit breakers, routing, micro-proxy, etc will be given by Spring Cloud. So spring Cloud basically provides some of the common tools and techniques and projects to quickly develop some common patterns of the microservices. Basically, there are two ways to load balanc
12 min read
Difference between Spring and Spring Boot
Spring Spring is an open-source lightweight framework that allows Java EE 7 developers to build simple, reliable, and scalable enterprise applications. This framework mainly focuses on providing various ways to help you manage your business objects. It made the development of Web applications much easier compared to classic Java frameworks and Appl
4 min read
Spring Cloud Vs Spring Boot Actuator
Spring CloudSpring Cloud's main purpose is to give tools and services for managing and making distributed systems, especially in a microservices architecture. The developer wants to speed up the process of building patterns in distributed systems, these tools can fulfill their requirement. They include almost all from the management of configuratio
5 min read
Configuring Multiple Spring Batch Jobs in a Spring Boot Application
Spring Batch serves as a robust framework within the Spring ecosystem, specifically tailored for managing batch processing tasks efficiently. It's designed to tackle big data jobs efficiently and comes with handy tools to make batch application development a breeze. In the context of a Spring Boot application, setting up multiple Spring Batch jobs
10 min read
Spring Boot - Reactive Programming Using Spring Webflux Framework
In this article, we will explore React programming in Spring Boot, Reactive programming is an asynchronous, non-blocking programming paradigm for developing highly responsive applications that react to external stimuli. What is Reactive ProgrammingIn reactive programming, the flow of data is asynchronous through push-based publishers and subscriber
4 min read
Spring Boot Batch Processing Using Spring Data JPA to CSV File
The Spring Batch is a framework in the Spring Boot ecosystem It can provide a lot of functionalities for Batch processing. The Spring Batch framework simplifies the batch development of applications by providing reliable components and other patterns for common batch processing concerns. Mostly, batch processing is used to read and write data in bu
7 min read
Show SQL from Spring Data JPA/Hibernate in Spring Boot
In Spring Boot, Spring Data JPA is part of the larger Spring Data Project that can simplify the development of the data access layers in the spring applications using the Java Persistence API and it can provide a higher-level abstraction over the JPA API. It can reduce the boilerplate code and make it easier to work with the database. Spring Data J
6 min read
Spring Boot - Spring Data JPA
Spring Data JPA or JPA stands for Java Persistence API, so before looking into that, we must know about ORM (Object Relation Mapping). So Object relation mapping is simply the process of persisting any java object directly into a database table. Usually, the name of the object being persisted becomes the name of the table, and each field within tha
6 min read
Properties with Spring and Spring Boot
Java-based applications using the Spring framework and its evolution into the Spring Boot and the properties play a crucial role in configuring the various aspects of the application. Properties can allow the developers to externalize the configuration settings from the code. Understanding how to work with properties in the Spring and Spring Boot i
4 min read
Implementing CORS in Spring Boot with Spring Security
CORS issue is one of the common issues being faced in web development. We are here going to configure CORS in our backend application built using Spring Boot and Spring security, being used for security purpose. Before going to fix the issue, lets understand what CORS is and how it works and why browsers show error while sending CORS request. What
6 min read
Spring Boot 3.0 - JWT Authentication with Spring Security using MySQL Database
In Spring Security 5.7.0, the spring team deprecated the WebSecurityConfigurerAdapter, as they encourage users to move towards a component-based security configuration. Spring Boot 3.0 has come with many changes in Spring Security . In this article, we'll learn how to implement JWT authentication and authorization in a Spring Boot 3.0 application u
9 min read
Spring Boot - Dependency Injection and Spring Beans
Spring Boot is a powerful framework for building RESTful APIs and microservices with minimal configuration. Two fundamental concepts within Spring Boot are Dependency Injection (DI) and Spring Beans. Dependency Injection is a design pattern used to implement Inversion of Control (IoC), allowing the framework to manage object creation and dependenci
6 min read
How to Build a RESTful API with Spring Boot and Spring MVC?
RESTful APIs have become the standard for building scalable and maintainable web services in web development. REST (Representational State Transfer) enables a stateless, client-server architecture where resources are accessed via standard HTTP methods. This article demonstrates how to create a RESTful API using Spring Boot and Spring MVC. We will w
7 min read
Spring Security Integration with Spring Boot
Spring Security is a powerful and customizable authentication and access control framework for Java applications. It provides comprehensive security services for Java EE-based enterprise software applications. This article will integrate Spring Security with a Spring Boot application, covering configuration, authentication, and securing RESTful API
5 min read