Для чего используется аннотация @Service в Spring?

«Для чего используется аннотация @Service в Spring?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аннотация @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 для управления транзакциями.