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

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

Все эти аннотации являются стереотипными (stereotype) и помечают классы как 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 дополнительно включает обработку исключений JDBC.

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

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

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

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