Back to questions
Junior — Middle
66
Какое различие между слоями Service, Controller и Repository в архитектуре Spring-приложений?
Companies where asked
Red Collar
Answer from AI
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> {
// методы доступа к данным
}
Такое разделение улучшает поддержку, тестируемость и масштабируемость приложения.