It's certainly daunting if you're green to it and there isn't a grizzled vet around, but if you're trying to build for more than contrived simple solutions that you need to monitor, scale, and secure I don't know anything else out there that gets you so far down the road almost at the beginning.
In the original "Java Development with the Spring Framework" in 2005, it was argued that J2EE was far too complex in order to be effective. Spring was going to provide a simplifying framework to make development easier.
To me it's ironic how Spring has evolved in complexity over the years, but it's the first framework any of us turn to.
Java compile time DI:
https://github.com/playframework/play-java-compile-di-exampl...
Java compile time DI using Dagger 2:
https://github.com/playframework/play-java-dagger2-example
Scala compile time DI:
https://github.com/playframework/play-scala-compile-di-examp...
Scala compile time DI with Macwire:
https://github.com/playframework/play-scala-macwire-di-examp...
Thanks!
Opinionated frameworks are fine to get started quickly, but for larger scale companies, you are gunna want flexibility beyond that.
I use Play 2 for most of my projects and frankly knowing what I know about Spring and J2EE (even though having never worked with them for the same reason) I couldn't really think of any reason to choose either of these outdated behemoths. With something like Play 2 and Slick/JOOQ you could run circles around these two.