Sobes.tech
Junior — Middle

Може ли да се објасне разлика између анотација @Controller и @Component у Spring-у и у чему је њихова намена?

sobes.tech АИ

Одговор од АИ

В Spring @Component — это универсальная аннотация для обозначения класса как компонента, который будет управляться контейнером Spring (IoC). Она служит для автоматического обнаружения и регистрации бинов.

@Controller — это специализированная аннотация, которая расширяет @Component и указывает, что класс предназначен для обработки HTTP-запросов в MVC-приложении. Классы с @Controller обычно содержат методы с аннотациями типа @RequestMapping для маршрутизации.

Таким образом:

  • @Component — общий стереотип для компонентов.
  • @Controller — специализированный компонент для веб-контроллеров.

Пример:

@Component
public class MyService {
    // бизнес-логика
}

@Controller
public class MyController {
    @RequestMapping("/hello")
    public String sayHello() {
        return "hello";
    }
}