← Назад к вопросам

Какие знаешь модули Spring Boot?

1.7 Middle🔥 121 комментариев
#Spring Boot и Spring Data#Spring Framework

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Модули Spring Boot

Spring Boot — это мощный фреймворк для разработки Java приложений. Он построен на основе Spring Framework и предоставляет множество модулей (starters) для различных целей. Давайте разберём основные из них.

Главная концепция: Spring Boot Starters

Spring Boot использует концепцию стартеров (starters) — это наборы зависимостей, которые упрощают настройку проекта:

<!-- pom.xml -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Основные модули Spring Boot

1. Spring Boot Web (spring-boot-starter-web)

Для создания REST API и веб-приложений:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@RestController
@RequestMapping("/api/users")
public class UserController {
    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        return ResponseEntity.ok(new User(id, "John"));
    }
}

2. Spring Data JPA (spring-boot-starter-data-jpa)

Для работы с реляционными базами данных через ORM:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(nullable = false)
    private String email;
}

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email);
    List<User> findByAgeGreaterThan(int age);
}

3. Spring Security (spring-boot-starter-security)

Для аутентификации и авторизации:

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

4. Spring Boot Test (spring-boot-starter-test)

Для тестирования приложений:

@SpringBootTest
class UserServiceTest {
    @MockBean
    private UserRepository userRepository;
    
    @Autowired
    private UserService userService;
    
    @Test
    void testGetUserById() {
        User user = new User(1L, "test@example.com");
        when(userRepository.findById(1L)).thenReturn(Optional.of(user));
        
        User result = userService.getUserById(1L);
        
        assertEquals("test@example.com", result.getEmail());
        verify(userRepository).findById(1L);
    }
}

5. Spring Data MongoDB (spring-boot-starter-data-mongodb)

Для работы с NoSQL базами:

@Document(collection = "products")
public class Product {
    @Id
    private String id;
    private String name;
    private Double price;
}

@Repository
public interface ProductRepository extends MongoRepository<Product, String> {
    List<Product> findByPriceGreaterThan(Double price);
}

6. Spring Boot Data Redis (spring-boot-starter-data-redis)

Для кеширования и работы с Redis:

@Configuration
@EnableCaching
public class CacheConfig {
    @Bean
    public LettuceConnectionFactory connectionFactory() {
        return new LettuceConnectionFactory();
    }
}

@Service
public class UserService {
    @Cacheable(value = "users", key = "#id")
    public User getUserById(Long id) {
        // Долгая операция
        return userRepository.findById(id).orElse(null);
    }
    
    @CacheEvict(value = "users", key = "#id")
    public void updateUser(Long id, User user) {
        userRepository.save(user);
    }
}

7. Spring Boot Actuator (spring-boot-starter-actuator)

Для мониторинга и управления приложением:

# application.yml
management:
  endpoints:
    web:
      exposure:
        include: health, metrics, prometheus, info
  endpoint:
    health:
      show-details: always
# Проверка здоровья приложения
curl http://localhost:8080/actuator/health

# Метрики
curl http://localhost:8080/actuator/metrics

8. Spring Boot Validation (spring-boot-starter-validation)

Для валидации данных:

public class UserRequest {
    @NotNull(message = "Email не может быть null")
    @Email(message = "Email должен быть в правильном формате")
    private String email;
    
    @NotBlank(message = "Имя не может быть пусто")
    @Size(min = 2, max = 100)
    private String name;
    
    @Min(value = 18, message = "Возраст должен быть не менее 18")
    private Integer age;
}

@PostMapping("/register")
public ResponseEntity<?> register(@Valid @RequestBody UserRequest request) {
    // request уже валидирован
    return ResponseEntity.ok("OK");
}

9. Spring Cloud (spring-cloud-starter-config)

Для распределённых систем и микросервисов:

@SpringBootApplication
@EnableDiscoveryClient
public class Application {
    // Eureka/Consul автоматически регистрируют сервис
}

@RestController
@FeignClient(name = "user-service")
public interface UserServiceClient {
    @GetMapping("/api/users/{id}")
    User getUserById(@PathVariable Long id);
}

10. Spring Boot Messaging (spring-boot-starter-amqp, spring-kafka)

Для работы с сообщениями:

// RabbitMQ
@Configuration
public class RabbitConfig {
    @Bean
    public Queue queue() {
        return new Queue("user-queue");
    }
}

@Service
public class UserPublisher {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    
    public void publishEvent(User user) {
        rabbitTemplate.convertAndSend("user-queue", user);
    }
}

@Service
public class UserListener {
    @RabbitListener(queues = "user-queue")
    public void receiveMessage(User user) {
        System.out.println("Получено: " + user.getEmail());
    }
}

// Kafka
@Service
public class KafkaService {
    @KafkaListener(topics = "user-topic")
    public void listen(String message) {
        System.out.println("Message: " + message);
    }
}

Полный список основных модулей

МодульНазначение
spring-boot-starter-webREST API и веб-приложения
spring-boot-starter-data-jpaРеляционные БД
spring-boot-starter-data-mongodbMongoDB
spring-boot-starter-data-redisRedis кеширование
spring-boot-starter-securityБезопасность
spring-boot-starter-validationВалидация
spring-boot-starter-testТестирование
spring-boot-starter-actuatorМониторинг
spring-boot-starter-amqpRabbitMQ
spring-kafkaKafka
spring-cloud-starterМикросервисы
spring-boot-starter-loggingЛогирование
spring-boot-starter-mailОтправка писем

Как подключить нужный модуль

# Maven
mvn dependency:tree

# Gradle
gradle dependencies

Я активно работал с большинством этих модулей в production приложениях и готов глубже обсудить любой из них.

Какие знаешь модули Spring Boot? | PrepBro