1. Two different systems exist for rendering responses
ViewResolver + View
HttpMessageConverter
2. Triggered in different ways
Render a view by returning a String
Write a message by returning a @ResponseBody Object or ResponseEntity
3. Which one do I use?
Use views to generate documents for display in a web browser: HTML, PDF, etc
Use @ResponseBody to exchange data with web service clients: JSON, XML, etc