Ответ
Стереотипные аннотации в Spring используются для автоматического обнаружения и регистрации классов как компонентов (beans) в контексте приложения Spring (ApplicationContext). Они являются частью механизма автоматического сканирования компонентов.
Основные стереотипные аннотации:
@Component— универсальный стереотип, помечающий класс как управляемый Spring'ом компонент.@Service— указывает, что класс содержит бизнес-логику. Семантический вариант@Component.@Repository— помечает класс как слой доступа к данным (DAO). Автоматически транслирует исключения доступа к данным в Spring-специфичныеDataAccessException.@Controller/@RestController— помечают класс как контроллер в веб-приложении (MVC или REST API).
Пример:
@Service // Spring обнаружит и создаст bean этого класса
public class UserService {
@Autowired
private UserRepository repository;
// бизнес-логика
}
@Repository
public class JpaUserRepository implements UserRepository {
// код доступа к данным
}
Зачем они нужны:
- Автоконфигурация: Избавляют от необходимости явного объявления каждого bean в XML или Java-конфигурации.
- Четкая архитектура: Разные аннотации визуально разделяют слои приложения (сервис, репозиторий, контроллер).
- Дополнительная функциональность: Аннотации несут семантику. Например,
@Repositoryдобавляет обработку исключений.