Ответ
Spring Core: Понимание Dependency Injection (DI) и Inversion of Control (IoC). Работа с бинами, их скоупами (singleton, prototype, request, session, application), жизненным циклом и SpEL (Spring Expression Language).
Spring MVC: Создание REST-контроллеров (@RestController), маппинг запросов (@RequestMapping, @GetMapping), валидация данных (@Valid), глобальная обработка исключений (@ControllerAdvice).
Spring Boot: Использование автоконфигурации, стартеров (starter dependencies), Spring Boot Actuator для мониторинга, работа с профилями (application-{profile}.properties).
Spring Data JPA: Работа с репозиториями, поддержка кастомных запросов (@Query), использование QueryDSL, управление транзакциями (@Transactional).
Spring Security: Настройка аутентификации (OAuth2, JWT) и авторизации на основе ролей, защита от CSRF.
Spring Cloud (базово): Конфигурация через Config Server, регистрация сервисов (Eureka), устойчивость (Hystrix), декларативные REST-клиенты (Feign).
Пример REST-контроллера:
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
// Внедрение зависимости через конструктор (рекомендуемый способ)
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public ResponseEntity<UserDto> getUser(@PathVariable Long id) {
UserDto user = userService.findById(id);
return ResponseEntity.ok(user);
}
}