In this tutorial, we will learn what is @Controller and how to use it in Spring Boot web applications.
The @Controller annotation is used in Spring MVC to mark a class as a
            controller component. It acts as a
            request handler and handles incoming HTTP requests, performing the necessary processing and returning a
            response.
Controllers in Spring MVC are responsible for processing user requests, interacting with business logic or services, and returning a view or response to the client.
Let's use Spring Boot to develop a simple web application.
Add the following Maven dependencies to your Spring boot application:
    <dependency>
        <groupId>org.springframework.boot
        <artifactId>spring-boot-starter-thymeleaf
    </dependency>
    <dependency>
        <groupId>org.springframework.boot
        <artifactId>spring-boot-starter-web
    </dependency>
The spring-boot-starter-web starter is responsible for setting up the
            web-related components and
            configurations in a Spring Boot application. It includes the necessary dependencies and auto-configurations
            to develop web applications using Spring MVC.
The spring-boot-starter-thymeleaf starter includes the Thymeleaf templating
            engine for server-side rendering
            of views. Thymeleaf is a popular Java-based templating language that enables the creation of dynamic web
            pages.
By including the spring-boot-starter-web and spring-boot-starter-thymeleaf starters in your
            Spring Boot project, you can quickly set up a web application with the necessary web infrastructure, request
            handling
            capabilities, and Thymeleaf templating support. These starters simplify the configuration process and
            provide a solid foundation for building modern, scalable, and interactive web applications using Spring
            Boot.
Next, create a class and annotate it with @Controller:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloController {
    @GetMapping({
        "/",
        "/hello"
    })
    public String hello(@RequestParam(value = "name",
        defaultValue = "World", required = true) String name, Model model) {
        model.addAttribute("name", name);
        return "hello";
    }
}
In the example above, the HelloController class is annotated with @Controller. The @GetMapping annotation is
            used to map the /hello and / URL paths to
            the home method, which returns a view name "hello". When a user
            visits the /hello URL, this method is executed and the associated view is
            rendered.
Spring boot will auto-configure the view resolver for Thymeleaf whenever it will find the
            spring-boot-starter-thymeleaf dependency on the classpath. Spring boot will
            pick Thymeleaf templates (HTML
            pages) from the resources/templates folder.
        
Next, let's create a Thymeleaf template hello.html under /resources/templates folder and add the following code to it:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here
</head>
<body>
  <p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
In the above code, th:text Thymeleaf attribute specifies that the content of
            the paragraph should be set
            using Thymeleaf's text substitution feature. 
"Hello, ' + ${name} + '!'": This Thymeleaf expression concatenates the string "Hello, " with the value
            of the
            ${name} variable and then appends "!" at the end. The ${name} variable is expected to be passed as a model
            attribute when rendering the template. The result of this expression will be dynamically inserted into the
            paragraph element when the page is rendered, displaying a personalized greeting message.
        
Next, let's run the Spring boot application and see the result in the browser:
Root URL: http://localhost:8080/
 
        The /hello?Ramesh URL: http://localhost:8080/hello?Ramesh
 
        The @Controller annotation is a fundamental building block of Spring MVC, allowing developers to create web applications and handle HTTP requests with ease. By using the @Controller annotation, you can define request mapping methods and build flexible, modular, and maintainable web applications using the Spring Framework.