Обновление в основном успешное, за исключением вопроса о совместимости времени выполнения , вызванной 3-й стороны или устаревшими внутренними библиотеками, которые до сих пор зависят от Boot 2.x и Resttemplate api. /> Контекст:
[*] Мое основное приложение теперь использует:
Spring Boot: 3.x
[*] Spring Framework: 6.x
[*] jdk: 17 jdk: 17 />
[*] Однако у меня есть сотни общих SDK/библиотеки (некоторые внутренние, около 3-й стороны), которые:
Скомпилируется против boot 2.x
[*]. org.springframework.web.client.resttemplate < /code> < /li>
Внутренний звонок:
Код: Выделить всё
org.springframework.http.client.ClientHttpResponse#getStatusCode()
< /code>
ожидает, что он вернет org.springframework.http.httpstatus < /code>. < /li>
< /ul>
< /li>
< /ul>
После обновления я получаю следующую ошибку во время выполнения:
.java.lang.NoSuchMethodError: ‘org.springframework.http.HttpStatus org.springframework.http.client.ClientHttpResponse.getStatusCode()
Код: Выделить всё
Caused by: java.lang.NoSuchMethodError: ‘org.springframework.http.HttpStatus org.springframework.http.client.ClientHttpResponse.getStatusCode()’
at com.legacy.sdk.interceptor.LegacyInterceptor.intercept(LegacyInterceptor.java:46)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:900)
< /code>
Это имеет смысл, потому что Spring Framework 6.x Изменил сигнатуру метода: < /p>
старый (Spring Boot 2.x /Framework 5.x):
httpstatus clienthttpresponse.getstatuscode (); < /p>
new (spring boot 3.x /framework 6.x. Clienthttpresponse.getStatuscode (); < /p>
Старый метод был удален (не оправдывался), поэтому библиотеки, ожидающие, что старая подпись сбоя. Перенос мой собственный код для использования RestClient
Однако устаревшие зависимости по-прежнему используют Resttemplate , и я не могу их изменить. Clienthttpresponse#getStatuscode ()) внутри приложения Spring Boot 3?
Подробнее здесь: https://stackoverflow.com/questions/796 ... getstatusc