In this chapter, we presented some advanced techniques that we can use to manage our configuration using converters and configuration profiles. We have also demonstrated how different configuration sources can be injected and prioritized over the standard configuration file. In the second part of this chapter, we had a look at how to capture the application life cycle's events and how to schedule the execution of future tasks.
To make our applications even more scalable, in the next chapter, we will discuss how to build reactive applications, which are event-driven and non-blocking. Hold on tight!