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

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

Ответ

В проектах на Spring Boot использовался следующий стек:

  • Spring Boot Core — автоконфигурация, embedded-серверы.
  • Spring MVC — для построения REST API.
  • Spring Data JPA — абстракция для работы с реляционными БД.
  • Spring Security — аутентификация и авторизация.
  • Spring Cloud (для микросервисной архитектуры) — Service Discovery (Eureka), Client-Side Load Balancing (Ribbon), Declarative REST Client (Feign).

Пример REST-контроллера (Spring MVC):

@RestController
@RequestMapping("/api/users")
public class UserController {
    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable Long id) {
        // ... логика
    }
}

Пример репозитория (Spring Data JPA):

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email); // Query derivation from method name
}

Пример базовой конфигурации безопасности (Spring Security):

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/api/public/**").permitAll()
                .anyRequest().authenticated()
            );
        return http.build();
    }
}