Introduction
In the previous chapters, we did a lot of configuration, and even more autoconfiguration, while developing our Spring Boot application. Now, it is time to take a look behind the scenes to find out the magic behind Spring Boot autoconfiguration and write some starters of our own as well.
This is a very useful capability to possess, especially for large software enterprises where the presence of a proprietary code is inevitable. It is very helpful to be able to create internal custom starters that would automatically add some of the configuration or functionalities to the applications. Some likely candidates would be custom configuration systems, libraries, and configurations that deal with connecting to databases, using custom connection pools, HTTP clients, servers, and more. We will go through the internals of Spring Boot autoconfiguration, take a look at how new starters are created, explore conditional initialization and wiring of beans based on various rules, and see that...