I like Spring Boot. Spring Boot is great...if you stay within their parameters. One major pain point though is not using the Spring boot parent pom:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
If you have your own parent pom/infrastructure, you have to "side-load" Spring boot dependencies thusly:
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
As their documentation states, if you use the Spring parent pom you can simply override versions with maven properties. Super easy, barely an inconvenience! Unfortunately if you side-load, you now have to specify every single dependency manually. This gets unwieldy quickly, especially in transitive enterprise dependencies.