Developer Tools
Spring Boot includes an additional set of tools that can make the application development experience a little more pleasant. The spring-boot-devtools
module can be included in any project to provide additional development-time features.
Maven configuration, in pom.xml,
<dependencies> |
Automatic Restart
Applications that use spring-boot-devtools automatically restart whenever files on the classpath change. Note that certain resources, such as static assets and view templates, do not need to restart the application.
Triggering a restart
As DevTools monitors classpath resources, the only way to trigger a restart is to update the classpath. The way in which you cause the classpath to be updated depends on the IDE that you are using. In Eclipse
, saving a modified file causes the classpath to be updated and triggers a restart. In IntelliJ IDEA
, building the project (Build -> Build Project) has the same effect.
Logging changes in condition evaluation
By default, each time your application restarts, a report showing the condition evaluation delta is logged. The report shows the changes to your application’s auto-configuration as you make changes such as adding or removing beans and setting configuration properties.
To disable the logging of the report, set the following property:
spring.devtools.restart.log-condition-evaluation-delta=false |
Excluding Resources
Certain resources do not necessarily need to trigger a restart when they are changed. For example, Thymeleaf templates can be edited in-place. By default, changing resources in /META-INF/maven
, /META-INF/resources
, /resources
, or /templates
does not trigger a restart but does trigger a live reload. If you want to customize these exclusions, you can use the spring.devtools.restart.exclude property. For example, to exclude only /static
and /public
you would set the following property:
spring.devtools.restart.exclude=static/**,public/** |
Note
Found something interesting that needs to figure it out later. When a project consists of a few modules, e.g., module B depends on module A, where B has main() function. Build a project (Auto-start) only has good effects on changes in module B, while not always applies to module A. Just a remark here.
Refer Spring-boot Developer Tools for more details.