Ответ
Основные модули Spring:
- Spring Core: Контейнер инверсии управления (IoC), Dependency Injection (DI), управление бинами (
@Component,@Autowired). - Spring MVC / Spring Web: Создание веб-приложений и REST API (
@RestController,@RequestMapping,DispatcherServlet). - Spring Boot: Автоконфигурация, стартеры (
spring-boot-starter-*), встроенные серверы (Tomcat), упрощение разработки. - Spring Data JPA: Абстракция для работы с репозиториями, автоматическая генерация запросов из имен методов, поддержка
@Query. - Spring Security: Аутентификация (форма, JWT, OAuth2) и авторизация на основе ролей, защита от CSRF.
- Spring AOP: Создание аспектов для сквозной логики (логирование, транзакции, кэширование) с использованием
@Aspectи advice (@Before,@Around). - Spring Batch: Обработка больших объемов данных пакетами (jobs, steps, chunk-oriented processing).
Пример REST-контроллера с Dependency Injection:
@RestController // = @Controller + @ResponseBody
@RequestMapping("/api/users")
public class UserController {
// Внедрение зависимости через конструктор (рекомендуемый способ)
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.findById(id);
// Возвращаем HTTP 200 OK с телом ответа
return ResponseEntity.ok(user);
}
}
Дополнительный опыт: Spring Cache (@Cacheable), Spring Test (@SpringBootTest), Spring Cloud (Config Server, Gateway).