Re data serving: I also use Spring and a combination of both approaches. Sometimes when data comes from a well optimized source(s) (typically an indexed db tables / cache) I create a single JSON response of all the UI needs. However there are cases where I would “glue” some data from more than one request displaying a load indicator for the “slow”/async pieces of the view. For example I have a list (displayed as a table) coming from MySQL (quick) but in my second column some data from an AJAX request to another service with a slow response (Impala query). The later approach makes the Ui non blocking (dependent on the slow data) and appearing more snappy.