[[webflux-controller]]
= Annotated Controllers

[.small]#xref:web/webmvc/mvc-controller.adoc[See equivalent in the Servlet stack]#

Spring WebFlux provides an annotation-based programming model, where `@Controller` and
`@RestController` components use annotations to express request mappings, request input,
handle exceptions, and more. Annotated controllers have flexible method signatures and
do not have to extend base classes nor implement specific interfaces.

The following listing shows a basic example:

[tabs]
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
----
	@RestController
	public class HelloController {

		@GetMapping("/hello")
		public String handle() {
			return "Hello WebFlux";
		}
	}
----

Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
----
	@RestController
	class HelloController {

		@GetMapping("/hello")
		fun handle() = "Hello WebFlux"
	}
----
======

In the preceding example, the method returns a `String` to be written to the response body.



