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

Какие знаешь стартеры в Spring Boot?

1.0 Junior🔥 171 комментариев
#Spring Boot и Spring Data

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

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

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

Стартеры (Starters) в Spring Boot

Spring Boot Starters — это наборы зависимостей, которые упрощают конфигурацию и включают всё необходимое для определённой функциональности. Вместо того, чтобы вручную добавлять десятки зависимостей, можно использовать один стартер.

Концепция Starters

Стартер — это пакет зависимостей (BOM), который позволяет:

  • Быстро начать разработку
  • Автоматически конфигурировать Bean
  • Избегать конфликтов версий
  • Следовать best practices

Основные Web Starters

spring-boot-starter-web

Для разработки REST API и веб-приложений.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
// Автоматически включает:
// - Spring MVC
// - Embedded Tomcat
// - Jackson для JSON
// - Validation

@RestController
@RequestMapping("/api/users")
public class UserController {
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return new User(id, "John Doe");
    }
}

spring-boot-starter-webflux

Для реактивных веб-приложений с Project Reactor.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
@RestController
@RequestMapping("/api/reactive")
public class ReactiveController {
    @GetMapping("/users")
    public Flux<User> getAllUsers() {
        return userService.findAllUsersReactively();
    }
}

Data/Database Starters

spring-boot-starter-data-jpa

Для работы с БД через JPA/Hibernate.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
</dependency>
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(nullable = false)
    private String name;
}

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name);
}

@Service
public class UserService {
    private final UserRepository userRepository;
    
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}

spring-boot-starter-data-mongodb

Для работы с MongoDB.

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

spring-boot-starter-data-redis

Для работы с Redis (кеширование, сессии).

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
@Configuration
@EnableCaching
public class CacheConfig {
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory factory) {
        return new RedisCacheManager.create(factory);
    }
}

@Service
public class UserService {
    @Cacheable(value = "users", key = "#id")
    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }
}

Message Queue Starters

spring-boot-starter-amqp

Для работы с RabbitMQ.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
@Configuration
public class RabbitConfig {
    @Bean
    Queue userQueue() {
        return new Queue("user.queue");
    }
    
    @Bean
    Exchange userExchange() {
        return new DirectExchange("user.exchange");
    }
}

@Service
public class UserProducer {
    private final RabbitTemplate rabbitTemplate;
    
    public void sendUserEvent(User user) {
        rabbitTemplate.convertAndSend(
            "user.exchange",
            "user.created",
            user
        );
    }
}

@Component
public class UserConsumer {
    @RabbitListener(queues = "user.queue")
    public void handleUserEvent(User user) {
        System.out.println("Received user: " + user.getName());
    }
}

spring-boot-starter-kafka

Для работы с Apache Kafka.

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

Security Starters

spring-boot-starter-security

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/public/**").permitAll()
                .requestMatchers("/admin/**").hasRole("ADMIN")
                .anyRequest().authenticated()
            )
            .formLogin();
        return http.build();
    }
}

Logging Starters

spring-boot-starter-logging

Используется по умолчанию, включает SLF4J и Logback.

private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

public void someMethod() {
    logger.info("Информация");
    logger.warn("Предупреждение");
    logger.error("Ошибка", exception);
}

Testing Starters

spring-boot-starter-test

Для написания тестов.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
@SpringBootTest
class UserServiceTest {
    @Autowired
    private UserService userService;
    
    @Mock
    private UserRepository userRepository;
    
    @Test
    void testGetUser() {
        User user = new User(1L, "John");
        when(userRepository.findById(1L)).thenReturn(Optional.of(user));
        
        User result = userService.getUserById(1L);
        assertEquals("John", result.getName());
    }
}

Другие популярные Starters

  • spring-boot-starter-actuator — мониторинг и управление приложением
  • spring-boot-starter-validation — валидация данных
  • spring-boot-starter-thymeleaf — шаблонизатор для вьюх
  • spring-boot-starter-mail — отправка писем
  • spring-boot-starter-oauth2-resource-server — OAuth2 сервер ресурсов
  • spring-boot-starter-cloud-config — конфигурация в Cloud

Как выбрать нужный Starter

<!-- Типичный pom.xml для REST API с БД -->
<dependencies>
    <!-- Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Data -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <!-- Database Driver -->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>
    
    <!-- Security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
    <!-- Testing -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Spring Boot Starters значительно упрощают начало разработки и обеспечивают консистентность в проектах. Выбрав правильные стартеры, можно быстро создать scalable и maintainable приложение.

Какие знаешь стартеры в Spring Boot? | PrepBro