About Spring

 

Spring was originally conceived as a way to simplify Java Enterprise Edition (JEE) development, but it’s not exactly a simple framework. It’s huge. The core framework is large, and dozens of portfolio projects extend that core, covering things like security, web flow, SOAP web services (REST web services are part of the core), enterprise integration, batch processing, mobile, various flavors of social (Facebook, LinkedIn, Twitter, GitHub, and so on), various flavors of NoSQL (MongoDB, Neo4j, Riak, and so on), BlazeDS/Flex, AMQP/Rabbit, and many more. If “simple” means something with few parts, then Spring isn’t simple.

Yet Spring does simplify Java development. As a general rule, it does so by isolating infrastructural concerns (such as persistence management and transaction management) from domain concerns. The framework handles the former so app developers can focus on the latter. In this respect, Spring is like JEE and even its earlier J2EE incarnation. Spring’s approach—based on POJOs, dependency injection, and support for a wide variety of third-party libraries—proved to be more effective than J2EE with EJB. JEE closed the gap by adopting key elements of that approach.

That Spring simplifies development without itself being simple isn’t paradoxical. Tools that simplify work don’t themselves have to be simple to learn. IDEs are a case in point.

The good news is that Spring keeps the learning curve reasonable in several ways: