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

Что такое Spring Boot Starter и как его использовать?

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

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

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

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

Spring Boot Starter и его использование

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

Проблема, которую решают Starters

Без Starters нужно было бы вручную добавлять множество зависимостей:

<!-- Без Starter пришлось бы добавлять так -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.14.0</version>
</dependency>
<!-- И ещё 10+ зависимостей... -->

Со Starter это просто одна строка:

<!-- С Starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Как работает Starter

Spring Boot Starter — это просто POM файл (для Maven) или build.gradle (для Gradle), который определяет список зависимостей для конкретной функциональности. Дополнительно он поставляется с автоконфигурацией (AutoConfiguration).

// AutoConfiguration класс (пример)
@Configuration
@ConditionalOnClass(RestTemplate.class)
@EnableConfigurationProperties(RestTemplateProperties.class)
public class RestTemplateAutoConfiguration {
    
    @Bean
    @ConditionalOnMissingBean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

Популярные Spring Boot Starters

spring-boot-starter-web — для создания веб приложений с Spring MVC:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

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

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;
    
    private String email;
    private String name;
}

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

@Service
public class UserService {
    private final UserRepository userRepository;
    
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    
    public User getUserById(Long id) {
        return userRepository.findById(id)
            .orElseThrow(() -> new UserNotFoundException("User not found"));
    }
}

spring-boot-starter-security — для безопасности и аутентификации:

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

spring-boot-starter-validation — для валидации данных:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
public class CreateUserRequest {
    @NotBlank(message = "Email is required")
    @Email(message = "Email should be valid")
    private String email;
    
    @NotBlank(message = "Name is required")
    @Size(min = 3, max = 50, message = "Name should be 3-50 characters")
    private String name;
    
    @NotNull(message = "Age is required")
    @Min(18)
    @Max(100)
    private Integer age;
}

spring-boot-starter-test — для тестирования:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

spring-boot-starter-actuator — для мониторинга и управления приложением:

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

Он предоставляет endpoints для мониторинга: /actuator/health, /actuator/metrics, /actuator/info

Как использовать Starter

  1. Добавить зависимость в pom.xml или build.gradle
  2. Создать конфигурацию (если нужна) в application.properties или application.yml
  3. Использовать автоконфигурируемые бины

Пример с Starter для логирования:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>
# application.yml
logging:
  level:
    root: INFO
    com.myapp: DEBUG
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
@Service
public class UserService {
    private static final Logger logger = LoggerFactory.getLogger(UserService.class);
    
    public void registerUser(String email) {
        logger.info("User registered: {}", email);
    }
}

Создание собственного Starter

Вы можете создать свой собственный Starter:

<!-- my-custom-starter-autoconfigure/pom.xml -->
<artifactId>my-custom-starter-autoconfigure</artifactId>
@Configuration
@EnableConfigurationProperties(MyCustomProperties.class)
public class MyCustomAutoConfiguration {
    
    @Bean
    @ConditionalOnMissingBean
    public MyCustomService myCustomService(MyCustomProperties properties) {
        return new MyCustomService(properties.getName());
    }
}
// META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
com.example.MyCustomAutoConfiguration

Преимущества Starters

  1. Быстрое начало — минимум конфигурации
  2. Управление версиями — Spring Boot управляет совместимостью зависимостей
  3. Лучшие практики — стартеры содержат проверенные конфигурации
  4. Меньше кода — автоконфигурация снижает boilerplate
  5. Кастомизация — всё ещё можно переопределить

Spring Boot Starter — это фундаментальная часть экосистемы Spring, которая делает создание современных Java приложений быстрым и простым.