Какие способы конфигурирования библиотек предоставляет Spring Boot?

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

Ответ

Да, Spring Boot предлагает несколько гибких механизмов конфигурации библиотек:

  1. Файлы свойств/YAML — основной способ через application.properties или application.yml:

    # Пример настройки HikariCP
    spring.datasource.hikari.maximum-pool-size=10
    spring.datasource.hikari.connection-timeout=30000
  2. @ConfigurationProperties — для типобезопасной привязки свойств к Java-объектам:

    @ConfigurationProperties(prefix = "my.service")
    @Data // Lombok
    public class ServiceProperties {
        private String endpoint;
        private int timeout = 5000;
        private boolean enabled = true;
    }
  3. Java-конфигурация (@Bean) — полный контроль над созданием бина:

    @Bean
    public SomeLibraryBean libraryBean(Environment env) {
        return new SomeLibraryBean()
            .setUrl(env.getProperty("library.url"))
            .setMode(env.getProperty("library.mode", "default"));
    }
  4. Auto-Configuration — Spring Boot автоматически настраивает библиотеки (например, DataSource, JPA) на основе classpath и свойств. Конфигурацию можно переопределить, объявив собственный бин.

  5. Профили (@Profile) — активация специфичной конфигурации для разных сред (dev, prod):

    @Bean
    @Profile("dev")
    public DataSource devDataSource() {
        return new EmbeddedDatabaseBuilder().build();
    }

Принцип: Spring Boot следует подходу "convention over configuration", предоставляя разумные значения по умолчанию, которые можно точечно менять через свойства или собственную конфигурацию.