Spring MVC забезпечує модель програмування на основі анотацій, де компоненти @Controller та @RestController використовують анотації для вираження відображень запитів, введення запитів, обробки винятків та багато іншого. Анотовані контролери мають гнучкі сигнатури методів і не мають обов'язкового завдання розширювати базові класи чи реалізувати певні інтерфейси. У цьому прикладі показано контролер, визначений за допомогою анотацій:

Java
@Controller
public class HelloController {
    @GetMapping("/hello")
    public String handle(Model model) {
        model.addAttribute("message", "Hello World!");
        return "index";
    }
}
Kotlin
import org.springframework.ui.set
@Controller
class HelloController {
    @GetMapping("/hello")
    fun handle(model: Model): String {
        model["message"] = "Hello World!"
        return "index"
    }
}

У попередньому прикладі метод приймає Model і повертає ім'я подання у вигляді String, але існує безліч інших варіантів, які будуть описані далі в цьому розділі.

У посібниках та навчальних матеріалах з spring.io використовується модель програмування на основі анотацій, описана в цьому розділі.