Совместимость DefaultMultipartHttpServletRequest в разных версиях Spring mvc

Я столкнулся с проблемой, когда хочу обновить Spring mvc с 2.5.3 до 4.x. В 2.5.3 класс org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest имеет конструктор

"public DefaultMultipartHttpServletRequest(
            HttpServletRequest request, Map multipartFiles, Map multipartParameters)".

Но в 4.2.9 конструктор изменился на

public DefaultMultipartHttpServletRequest(HttpServletRequest request, MultiValueMap<String, MultipartFile> mpFiles,
            Map<String, String[]> mpParams, Map<String, String> mpParamContentTypes).

У меня есть настроенный MultipartHttpServletRequest, который расширяет "org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest" в моем собственном модуле. если мы обновим версию до 4.x, мы должны изменить конструктор нашего собственного класса. Но я надеюсь, что этот настраиваемый класс будет доступен как для Spring 2, так и для Spring 4.x.

В классе DefaultMultipartHttpServletRequest есть еще один метод, который также имеет проблемы совместимости, например protected final void setMultipartFiles(Map multipartFiles).

Есть ли у кого-нибудь идеи по этому поводу?

Вам потребуется несколько версий или не расширяйте этот класс, а вместо этого реализуйте интерфейс MultipartHttpServletRequest (и, возможно, вместо этого расширьте AbstractMultipartHttpServletRequest).

M. Deinum 25.09.2018 07:56

Я хочу разработать единый модуль, который предоставляет настраиваемый MultipartHttpServletRequest для приложений с разными версиями Spring mvc. Помещение нескольких версий модулей Spring mvc в одно приложение может вызвать исключение времени выполнения (конфликт классов). У интерфейса MultipartHttpServletRequest также есть проблема совместимости. например, метод getFileMap в разных версиях Spring mvc имеет разный тип возвращаемого значения.

yifan 26.09.2018 11:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
107
0

Другие вопросы по теме