Sobes.tech
Назад к вопросам
Junior — Middle
65

Какое различие между слоями Service, Controller и Repository в архитектуре Spring-приложений?

Компании, где спрашивали
Red Collar

Ответ от нейросети

sobes.tech AI

В архитектуре Spring-приложений слои Service, Controller и Repository выполняют разные роли:

  • Controller — отвечает за обработку HTTP-запросов, получение данных от пользователя и возврат ответа. Он связывает внешний мир с внутренней логикой приложения.

  • Service — содержит бизнес-логику приложения. Здесь реализуются основные операции, правила и процессы, которые не зависят от деталей хранения данных или представления.

  • Repository — отвечает за работу с базой данных или другими источниками данных. Здесь реализуются операции CRUD и запросы к данным.

Пример:

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findUserById(id);
    }
}

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

    public User findUserById(Long id) {
        // бизнес-логика, например проверка прав
        return userRepository.findById(id).orElse(null);
    }
}

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // методы доступа к данным
}

Такое разделение улучшает поддержку, тестируемость и масштабируемость приложения.