Sobes.tech
Back to questions
Junior — Middle
67

Можно ли объяснить различия между аннотациями @Controller и @Component в Spring, и в чем их назначение?

Answer from AI

sobes.tech AI

В 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";
    }
}