Ответ
Аннотация @Service в Spring Framework помечает класс как компонент сервисного слоя, содержащий бизнес-логику приложения.
Пример:
@Service
public class UserService {
@Autowired
private UserRepository repository;
public User getUserById(Long id) {
// Бизнес-логика и вызовы к репозиторию
return repository.findById(id).orElseThrow();
}
}
Основные характеристики:
- Является стереотипной аннотацией (специализированный
@Component), что улучшает читаемость и позволяет применять аспекты (AOP) к слою сервисов. - Автоматически обнаруживается сканированием компонентов Spring и регистрируется в
ApplicationContextкак бин. - По умолчанию создается в singleton scope.
- Поддерживает внедрение зависимостей (через
@Autowired, конструктор). - Часто используется в сочетании с
@Transactionalдля управления транзакциями.