Kotlin is a chance to get away from the cruft and annotation magic of traditional Java.
I use Ktor and it's everything you need for a modern API (and can be deployed as a WAR if that's why you want Spring Boot)
Ktor's API that will be familiar to anyone who's used similar "neo-web frameworks" in other languages like Gin or Express, and it allows you to architecture your app in a way that makes sense to you (so if you need DI, you can bring in something like Koin, but you're never compelled to by the framework)
That's not necessarily a bad thing, but usually people who are giving the JVM a "second chance" via Kotlin were initially turned off by that ceremony
-
So when someone asks me "What should framework should I try for Kotlin web services?" my answer is usually Ktor.
Because if they had to ask me, they probably aren't going to be that in love with Spring Boot (people coming from Java from example, are usually just going to default to Spring Boot)
There's everything, from the simplest possible https://sparkjava.com/, to the a little bit nicer https://javalin.io/ (which has a Kotlin wrapper), to the high performance and full framework https://vertx.io/ (which always had great multi-lingual support within the JVM), to the newer and GraalVM-friendly https://micronaut.io/ and https://quarkus.io/ ... for the Enterprise-only crowd, you still have the JEE successor, https://jakarta.ee/ and Oracle's own https://helidon.io/#/ (which likes to position itself as microservice focused, like Micronaut and Quarkus). Not to mention lower level libraries you can use, like https://www.eclipse.org/jetty/ and https://netty.io/.
Ktor has a tough fight to become dominant even in the Kotlin world.
Spring Boot is, still, definitely the most popular option, but it's still just one of very very many!
It also changes the development workflow from a maven-based project to a NPM-based project which should be more familiar to JavaScript developers.
https://www.jetbrains.com/help/youtrack/standalone/Third-Par...
How does using Ktor preclude one from using anything you just described?
Lol just using Koin alone would bring every thing you just described, with the added benefit of not delving into XML files.
Really some people are just married to the mentality of "If it's not on the feature list, I guess you can't do it". I believe in using focused tools that excel at specific things. Ktor lets you do that.
You can set them up other ways, but it just ends up making a lot of sense to define them there.
To be fair, Ktor is pretty similar with the "application.conf" if you use the built-in Profiles equivalent: https://ktor.io/docs/configurations.html#hocon-overview
I just prefer that if I'm using DI, the concept of environments be handled by DI. Scoping is what DI does best after all...
I'm a huge proponent of Kotlin on the server side, less on frontend (JS) side.
If you go with Kotlin and Spring Boot, Micronaut or even just Ktor,you'll likely not regret the choice. (I have no experience with DropWizard).
Now if you choose Java it will not be a horrible choice either, and it is not too hard to convert to Kotlin later if you need/want to. I've heard cases of people going back to Java a few years back, mostly for compiler performance reasons, but there has been a lot of effort on that recently. And while compiling Kotlin is still slower than compiling Java, the fact that you can divide things more easily in multiple files and incremental compilation compensates in most cases (except of course in the case f a clean build).