Перехід на Spring Boot 3 є значним кроком для будь-якого Java-додатку, оскільки ця версія вносить багато змін, включаючи перехід на Jakarta, оновлення залежностей та зміни в конфігурації. Одним із найкорисніших інструментів для полегшення цього процесу є Spring Boot Properties Migrator — компонент, який автоматично допомагає виявляти застарілі налаштування та пропонує їх сучасні альтернативи.
Що таке Spring Boot Properties Migrator?
Spring Boot Properties Migrator — це спеціальна бібліотека, яка аналізує файли конфігурації вашого додатку (application.properties або application.yml) під час запуску та виявляє:
- Застарілі властивості (deprecated properties)
- Властивості, які були видалені
- Властивості, які були перейменовані
- Рекомендації щодо заміни старих налаштувань на нові
Інструмент працює в runtime і надає детальні звіти про те, які зміни потрібно внести до вашої конфігурації.
Основні зміни в Spring Boot 3
Перед початком міграції важливо розуміти ключові зміни:
1. Перехід на Jakarta EE
Spring Boot 3 використовує Jakarta EE замість javax.* пакетів. Це означає, що всі імпорти потрібно оновити:
javax.servlet.*→jakarta.servlet.*javax.persistence.*→jakarta.persistence.*javax.validation.*→jakarta.validation.*
2. Java 17 як мінімальна версія
Spring Boot 3 вимагає Java 17 або вище.
3. Зміни в властивостях конфігурації
Багато властивостей були перейменовані або видалені для покращення консистентності.
Як використовувати Spring Boot Properties Migrator
Крок 1: Додавання залежності
Додайте Properties Migrator до вашого pom.xml (Maven):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
<scope>runtime</scope>
</dependency>XMLАбо до build.gradle (Gradle):
runtime 'org.springframework.boot:spring-boot-properties-migrator'
```
### Крок 2: Запуск додатку
Після додавання залежності запустіть ваш додаток. Properties Migrator автоматично проаналізує конфігураційні файли і виведе попередження в логи.
### Крок 3: Аналіз виводу
В логах ви побачите повідомлення, схожі на ці:
```
WARN : The use of configuration keys that have been renamed was found in the environment:
Property source 'applicationConfig: [classpath:/application.properties]':
Key: spring.datasource.max-active
Line: 12
Replacement: spring.datasource.hikari.maximum-pool-size
Reason: renamed in Spring Boot 2.0
Key: server.servlet-path
Line: 8
Replacement: spring.mvc.servlet.path
Reason: renamed for clarityXSLКрок 4: Оновлення конфігурації
На основі отриманих рекомендацій оновіть ваші файли конфігурації.
Приклади найпоширеніших змін властивостей
Налаштування сервера
Було:
server.servlet.path=/api
server.context-path=/myapp
Стало:
spring.mvc.servlet.path=/api
server.servlet.context-path=/myapp
Налаштування DataSource
Було:
spring.datasource.max-active=50
spring.datasource.max-idle=10
spring.datasource.min-idle=5
Стало:
spring.datasource.hikari.maximum-pool-size=50
spring.datasource.hikari.minimum-idle=5
Налаштування логування
Було:
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
Стало:
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
# (без змін, але Properties Migrator перевірить)
Actuator endpoints
Було:
management.security.enabled=false
Стало:
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
Покрокова інструкція міграції
1. Підготовка
- Створіть резервну копію вашого проєкту
- Переконайтеся, що використовуєте Java 17+
- Оновіть систему збірки (Maven/Gradle)
2. Оновлення версії Spring Boot
Maven (pom.xml):
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.0</version>
</parent>XMLGradle (build.gradle):
plugins {
id 'org.springframework.boot' version '3.2.0'
}XSL3. Оновлення пакетів javax → jakarta
Використайте інструменти IDE або скрипти для масової заміни:
<em># Приклад для Unix/Linux/Mac</em>
find . -type f -name "*.java" -exec sed -i 's/javax.servlet/jakarta.servlet/g' {} +
find . -type f -name "*.java" -exec sed -i 's/javax.persistence/jakarta.persistence/g' {} +Bash4. Використання OpenRewrite (опціонально)
OpenRewrite — потужний інструмент для автоматизації міграції:
<plugin>
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
<version>5.3.0</version>
<configuration>
<activeRecipes>
<recipe>org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0</recipe>
</activeRecipes>
</configuration>
</plugin>XMLЗапустіть міграцію:
mvn rewrite:run
5. Тестування
Після внесення змін:
- Запустіть всі unit-тести
- Проведіть інтеграційне тестування
- Перевірте всі критичні функції вручну
Поширені проблеми та їх вирішення
Проблема 1: Невідповідність залежностей
Проблема: Конфлікти версій бібліотек
Рішення: Використовуйте Spring Boot BOM для керування версіями:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.2.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>XMLПроблема 2: Застарілі security налаштування
Проблема: SecurityConfiguration не компілюється
Рішення: Оновіть конфігурацію безпеки на новий DSL:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authz -> authz
.requestMatchers("/public/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(withDefaults());
return http.build();
}JavaПроблема 3: Зміни в Spring Data
Деякі методи репозиторіїв були змінені або видалені. Перегляньте документацію Spring Data для конкретних змін.
Коли видаляти Properties Migrator
Properties Migrator слід видалити після завершення міграції, оскільки він призначений лише для перехідного періоду:
- Переконайтеся, що всі попередження виправлені
- Видаліть залежність з pom.xml або build.gradle
- Перезапустіть додаток та переконайтеся, що все працює
Корисні ресурси
І на останок
Spring Boot Properties Migrator значно спрощує процес міграції на Spring Boot 3, автоматично виявляючи застарілі налаштування та пропонуючи їх заміну. Хоча міграція може здатися складною через великі зміни (особливо перехід на Jakarta), систематичний підхід та використання правильних інструментів зроблять цей процес керованим та передбачуваним.
Не забувайте про ретельне тестування на кожному етапі міграції та створення резервних копій перед внесенням значних змін. Після успішної міграції ваш додаток отримає доступ до нових можливостей Spring Boot 3, покращеної продуктивності та довгострокової підтримки.





