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

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

Spring разделяет логику приложения на слои для лучшей организации кода:

Repository (DAO)

  • Работа с данными (CRUD)
  • Интерфейс с базой данных
  • Аннотация @Repository
java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

Service

  • Бизнес-логика
  • Связывает Repository и Controller
  • Аннотация @Service
java
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    
    public User getUser(Long id) {
        return userRepository.findById(id).orElseThrow();
    }
}

Controller

  • Обработка HTTP-запросов
  • Возвращает ответ клиенту
  • Аннотация @Controller или @RestController
java
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;
    
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUser(id);
    }
}

Главное различие: Repository - данные, Service - логика, Controller - HTTP. Это обеспечивает разделение ответственностей.

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

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

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

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