Spring Framework #
What? Why would you use it? #
It is a dependency injection framework that helps you simplify your code and make it more testable. It started as an alternative to Java 2 EE and has now grown beyond it. It even includes a web framework (Web MVC) within it. Baked in with best practices so you can focus on the business problem.
It encourages you to use interfaces and helps minimize configuration code.
That should make your app more flexible to different implementations and make it easier to test.
It’s popular as it encourages developers to write POJOs rather than Enterprise Java Beans and stuff.
Another selling point of the Spring Framework is that it provides config files instead of needing to hard-code stuff. In Spring v5 (not sure since when), almost all configurations can be done with just Java. No XML necessary. Why would you still use XML configuration? It provides a separation of concerns where wiring up dependencies can be done away from the app code.