I just rolled off a project where I chose to use Spring Boot to create a number of microservices. I have also written a number of Dropwizard services, and wanted to compare the two while they were fresh in my mind.
They have a number of similarities, of course. Both Spring Boot and Dropwizard create standalone jarfiles that can be deployed without needing a container. Both favor convention over configuration and want to help you do the right thing out of the box. Both are java based. Both have monitoring, health checks, logging and other production nicitiies buit-in. Both are opinionated–making a lot of choices for the developer, rather than forcing the developer to choose. Both make it easy to leverage existing libraries. Both have a focus on performance.
However, there were a number of reasons I choose Spring Boot over Dropwizard for the recent project, and these highlight the differences. The first is that dependency injection is built into Spring Boot in a way that it simply isn’t with Dropwizard. Of course, there are third party solutions for bolting DI onto Dropwizard, but we also needed a java DI framework that would handle lifecycle events, which pretty much means Spring. Finally, this project wasn’t all about REST services, and while Dropwizard has some support for other types of services, it really is designed as a performant HTTP/REST layer, and certainly almost all the questions about Dropwizard online are about REST and APIs. Spring Boot, on the other hand, aims to provide support for a plethora of different types of services. Plus, you can leverage the rest of the large Spring codebase.
There are some other differences as well. Dropwizard uses shading to build fat jars while Spring Boot uses nested jars. As far as support, Spring, as usual, wins on the documentation front, with loads of accurate docs. But Dropwizard definitely has a larger community around it (compare the activity of the DW google group to the Spring Boot forums).
If you are writing a REST API in Java, Dropwizard is a great choice (here’s a review of other options I did a few months ago). If you want to build microservices that integrate with other types of components (queues, nosql, etc), Spring Boot is what I’d recommend.