Встречается на собеседованиях • сегодня

В чем разница между аннотациями @Component, @Controller, @Repository и @Service

Все эти аннотации являются специализированными формами @Component и используются для автоматического обнаружения бинов Spring:

  • @Component - базовый стереотип, помечает любой класс как Spring-компонент
  • @Controller - специализация для веб-слоя (MVC контроллеры)
  • @Service - указывает на бизнес-логику сервисного слоя
  • @Repository - для DAO/репозиториев, добавляет автоматическую трансляцию исключений в DataAccessException

Пример:

java
@Controller
public class UserController {
    @Autowired
    private UserService userService;
}

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
}

@Repository
public class UserRepository {
    // методы доступа к данным
}

Разница в семантике - аннотации указывают на роль класса в архитектуре. Технически Spring обрабатывает их одинаково, но специализированные аннотации дают дополнительные возможности (например, @Repository + исключения) и улучшают читаемость кода.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы