[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-dlya-chego-nuzhny-annotatsii-component-service-repository-i-controller":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},611,"dlya-chego-nuzhny-annotatsii-component-service-repository-i-controller",14,"spring","Spring","🌱","Для чего нужны аннотации @Component, @Service, @Repository и @Controller?","Все эти аннотации являются стереотипными (stereotype annotations) и помечают класс как Spring-бин для обнаружения при сканировании компонентов.\n\n| Аннотация | Слой | Дополнительная функциональность |\n|-----------|------|--------------------------------|\n| @Component | Общий | Базовая аннотация, без дополнительного поведения |\n| @Service | Бизнес-логика | Чисто семантическая |\n| @Repository | Доступ к данным | Автоматическая трансляция исключений в DataAccessException |\n| @Controller | Веб-контроллер | Включает обработку маппинга запросов |\n\n```java\n@Component \u002F\u002F общий компонент\npublic class EmailValidator { }\n\n@Service \u002F\u002F бизнес-логика\npublic class UserService { }\n\n@Repository \u002F\u002F доступ к данным\npublic class UserRepository { }\n\n@Controller \u002F\u002F веб-контроллер\npublic class UserController { }\n```\n\nС точки зрения IoC-контейнера все четыре аннотации работают одинаково -- регистрируют бин. Различия: `@Repository` добавляет трансляцию исключений, `@Controller` включает обработку запросов, `@Service` -- чисто семантическая.\n\n> **На собеседовании:** интервьюер хочет услышать, что это специализации `@Component`, и знание конкретных различий (особенно трансляция исключений в `@Repository`). Частая ошибка -- использовать `@Component` для всех классов без разбора.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Для чего нужны аннотации @Component, @Service, @Repository и — Gymterview","Все эти аннотации являются стереотипными (stereotype annotations) и помечают класс как Spring-бин для обнаружения при сканировании компонентов.","Все эти аннотации являются стереотипными (stereotype annotations) и помечают класс как Spring-бин для обнаружения при ск",[7,13],true]