But as a self-professed Java hater; Spring, Spring Boot, and the surrounding ecosystem is really nice to work in.
I didn't really get the fuss and a lot of our vibe was "why isn't this more like Rails?"
Later I worked on a Spring 3 project. It was a very well-written monolith, all the best practices up to that generation, layers and services and repositories, the whole shebang. Yet various things about it were flatly painful. That's the experience that made me understand why Spring Boot is actually a Really Big Deal.
These days if I am going to write a general consumer-facing app, I'm perfectly happy with Spring Boot, especially if Kotlin is in frame. A lot of Pivotal Labs projects now use Boot+Kotlin as their default starting point and many folks see the virtues.
It's not Rails, it never will be. But on the other hand: It's not Rails, it never will be.
I was running a meetup tonight, and going over spring boot on kotlin. It felt so heavy to me. I've had this thought too why not like X.
Spring has a really great ecosystem around it. I sort of look at it like the AWS of web frameworks. It has practically the kitchen sink in it.
I've switched over to Kotlin. While I gravitated more to I think the sinatra style. I went from Spark -> Jooby -> now Ktor/Vert.x. Vert.x is like a breath of fresh air. I have never felt more liberated writing a backend. Combining that with Kotlin multiplatform and ktor for the js clients. Is so dead simple.
But a warm JVM is a thing of beauty.
Hopefully Graal and Substrate will make this a non-issue in the coming years.
But It works better under gradle, and that is a whole nother battle.
That's why my new framework of choice is Clojure (Leiningen, Luminus) on the server and ClojureScript with Reagent and Fighwheel on client side.
The app starts moderately quickly but once it starts I have REPLs to both server and client side and I have reasonably reliable reloading of everything when I edit it. Once it starts I can add services on backend side and then immediately write client side ui to consume them, all without even reloading the page. As soon as I save any file on either client or server side it is automatically reloaded without me having to do anything.
I can even use same code on client/server side.
Have I mentioned it is the same language?