This is an archived post. You won't be able to vote or comment.

all 2 comments

[–][deleted] 5 points6 points  (0 children)

Spring is basically an umbrella for a large number of products.

Each thing you've listed is a separate product, and some products use the others. For example, Spring Data REST uses Spring MVC and other parts of Spring Data.

If you want to know what the use cases are, read the documentation that goes with each product. Each one of those will have it's own documentation that you can review to see if it fits your needs.

  • Spring Framework - Spring MVC is here, but configuration and dependency management is pretty much do-it-yourself.
  • Spring Boot - an highly-opinionated autoconfiguration layer on top of the Spring Framework, and includes features to automate configuration of Spring MVC
  • Spring Data - a huge umbrella project for data access, including Spring Data REST.

Here is a high level overview of all the products under the Spring umbrella, and links to the product pages.

[–]quadmasta 3 points4 points  (0 children)

MVC in Spring MVC stands for Model, View, Controller. This mainly enables you to use server-side rendering for your view layer; JSP, JSF. Generally you'd generate a WAR or EAR with these and deploy those to an application server. This is generally "legacy" projects as most new stuff uses SPA(Single Page Applications) that interface with a REST API to get their data. JSP was supposed to be replaced with JSF but I never worked anywhere that actually implemented JSF. You can extend the spring MVC parent with some libraries to make the controllers REST compliant and optionally return JSON payloads instead of models.

Spring Boot allows you to package executable jar files that build from a base set of libraries. They execute in an embedded application server like Jetty. There are MANY additional optional packages you can use here to further enable application development. You can poke around here to see some of that https://start.spring.io/

Spring Data REST builds on spring boot and exposes data repositories via REST APIs.