@Controller annotation for defining new controller

In this section, you will learn about @Controller annotation for defining new controllers.

@Controller annotation for defining new controller

@Controller annotation for defining new controller

In this section, you will learn about @Controller annotation for defining new controllers.

@Controller annotation shows that the annotated class act as the controller. This annotation act as role indicator. The DispatcherServlet scans such annotated classes and finds the @RequestMapping annotations in the class so that it can relate the requested URLs to the associated methods.

Prior to Spring 3.0, we need to define the controller in the dispatcher's context  by using standard Spring bean definition. Also, @Controller supports auto detection for component classes in the classpath and auto-registration of bean definitions for these classes.

You need to add the following configuration to enable auto detection of the annotated controllers through component scanning :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

	<context:component-scan base-package="net.roseindia"/>
	
	<!-- ... -->

</beans>

You can use @Controller annotation to define new controller class as follows :

@Controller
public class HelloWorldController {
	@RequestMapping("/hello")
	public ModelAndView helloWorld() {
		String message = "Hello World, Spring 3.0!";
		return new ModelAndView("hello", "message", message);
	}
}