Эффективные способы удаления пробелов из свойств Spring Boot

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

Метод 1: использование свойств Spring Boot ConfigurationProperties
Spring Boot предоставляет аннотацию @ConfigurationProperties, которую можно использовать для привязки свойств к объекту Java. Чтобы автоматически обрезать пробелы, мы можем использовать аннотацию @NotBlankиз библиотеки Hibernate Validator.

import org.hibernate.validator.constraints.NotBlank;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
@Validated
@ConfigurationProperties(prefix = "myapp")
public class MyAppProperties {
    @NotBlank
    private String myProperty;
    // Getter and Setter
}

При таком подходе значение myPropertyбудет автоматически обрезаться при загрузке свойств.

Метод 2: Custom PropertySource
Другой способ обрезать пробелы — создать собственную реализацию PropertySource. Мы можем расширить класс EnumerablePropertySourceи переопределить метод getProperty, чтобы обрезать значение.

import org.springframework.core.env.EnumerablePropertySource;
public class TrimmedPropertySource extends EnumerablePropertySource {
    public TrimmedPropertySource(String name, Properties source) {
        super(name, source);
    }
    @Override
    public String getProperty(String name) {
        String value = super.getProperty(name);
        if (value != null) {
            value = value.trim();
        }
        return value;
    }
}

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

import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;
public class CustomEnvironmentPostProcessor implements EnvironmentPostProcessor {
    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        Properties properties = new Properties();
        // Load properties from any source (e.g., file, database)
        TrimmedPropertySource propertySource = new TrimmedPropertySource("myPropertySource", properties);
        environment.getPropertySources().addFirst(propertySource);
    }
}

Метод 3: использование языка выражений Spring (SpEL)
Язык выражений Spring (SpEL) позволяет нам манипулировать значениями свойств во время выполнения. Мы можем использовать SpEL для удаления пробелов в свойствах.

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyComponent {
    @Value("#{myProperties.myProperty.trim()}")
    private String myProperty;
    // ...
}

В этом примере значение myPropertyбудет обрезано с помощью метода trim()класса String.

Обрезание пробелов в свойствах Spring Boot необходимо для обеспечения согласованной и точной конфигурации. В этой статье мы рассмотрели три метода: использование @ConfigurationPropertiesс @NotBlank, создание собственного PropertySourceи использование SpEL. Используя эти подходы, вы можете эффективно обрабатывать пробелы в приложениях Spring Boot.