Встречается на 2% собеседований по Java

В чем разница между @Controller и @Repository в Spring

@Controller и @Repository — это стереотипные аннотации Spring, но они служат разным целям.

@Controller:

  • Используется для веб-слоя (MVC).
  • Обрабатывает HTTP-запросы и возвращает представление (View) или данные (REST).
  • Часто используется с @RequestMapping или @GetMapping/@PostMapping.

Пример:

java
@Controller
public class UserController {
    @GetMapping("/users")
    public String getUsers(Model model) {
        model.addAttribute("users", userService.getAll());
        return "users";
    }
}

@Repository:

  • Обозначает слой доступа к данным (DAO).
  • Автоматически перехватывает исключения (например, SQL) и преобразует их в Spring DataAccessException.
  • Часто используется с JPA (@Entity, CrudRepository).

Пример:

java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    User findByEmail(String email);
}

Ключевое отличие:
@Controller — для веб-запросов, @Repository — для работы с БД. Обе аннотации — частные случаи @Component, но с дополнительной семантикой.

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

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

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

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