Какие основные модули и компоненты Spring Framework используются в разработке?

«Какие основные модули и компоненты Spring Framework используются в разработке?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Spring Framework — это модульная платформа. Вот ключевые компоненты, которые чаще всего используются в enterprise-разработке:

Ядро и основа:

  1. Spring Core (IoC Container & Dependency Injection)

    • За что отвечает: Управление жизненным циклом объектов (бинов) и внедрение зависимостей.
    • Пример:
      @Service // Бин, управляемый Spring
      public class UserService {
          private final UserRepository repository;
          // Внедрение через конструктор (рекомендуемый способ)
          public UserService(UserRepository repository) {
              this.repository = repository;
          }
      }
  2. Spring Boot

    • За что отвечает: Автоконфигурация и быстрый старт проектов. Основа большинства современных Spring-приложений.
    • Пример стартера: spring-boot-starter-web автоматически настраивает встроенный сервер (Tomcat) и Spring MVC.

Для веб-разработки:

  1. Spring MVC

    • За что отвечает: Архитектура Model-View-Controller для создания REST API или веб-приложений.
    • Пример контроллера:
      @RestController
      @RequestMapping("/api/users")
      public class UserController {
          @GetMapping
          public ResponseEntity<List<User>> getAllUsers() {
              // ...
          }
      }
  2. Spring Data

    • За что отвечает: Упрощение доступа к данным (репозитории). Поддерживает JPA, MongoDB, Redis и др.
    • Пример репозитория:
      public interface UserRepository extends JpaRepository<User, Long> {
          List<User> findByActiveTrue(); // Spring Data создаст запрос автоматически
      }
  3. Spring Security

    • За что отвечает: Аутентификация, авторизация и защита от атак.
    • Пример базовой конфигурации:
      @Configuration
      @EnableWebSecurity
      public class SecurityConfig {
          @Bean
          public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
              http.authorizeHttpRequests(authz -> authz
                  .requestMatchers("/admin/**").hasRole("ADMIN")
                  .anyRequest().authenticated()
              );
              return http.build();
          }
      }

Другие часто используемые модули:

  • Spring AOP — для сквозной логики (логирование, транзакции).
  • Spring Cache — абстракция для кэширования.
  • Spring Batch — для пакетной обработки данных.