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 используется модель программирования на основе аннотаций, описанная в этом разделе.