Бин загрузочного модуля Spring возвращает неверно закодированную строку - PullRequest
1 голос
/ 09 июля 2020

Я новичок в Spring ie.

У меня есть автономное приложение Spring (MyModule), которое включено как модуль в другое автономное приложение (MyMainApp), используя следующую аннотацию

@SpringBootApplication(scanBasePackageClasses = {MyModule.class....}}

У меня есть бин, который есть в приложении MyModule. Этот компонент читает файл из Amazon S3, содержащий строку с некоторыми немецкими символами, и возвращает его конечной точке в MyMainApp. (Я знаю, что это могла быть служба, а не фасоль). Эта конечная точка аннотируется -

@GetMapping(value = "/{id}", produces =  "application/json charset=utf-8")

Проблема:

Когда я запускаю тест Spring в приложении MyModule, я получаю правильно закодированную строку (UTF-8). enter image description here

(I also tried creating a similar endpoint in my MyModule Application and it returns the correct result.)

When I make a call to this bean method from my MyMainApp I get incorrectly encoded characters.

введите описание изображения здесь

Я читал о CharacterEncodingFilter. Это правильный способ исправить это?

Ответы [ 3 ]

0 голосов
/ 09 июля 2020

Возможно, это опечатка, попробуйте:

@GetMapping(path = "/{id}", produces =  "application/json;charset=UTF-8")
0 голосов
/ 22 июля 2020

Это было решено, когда я -

  1. Недействительный кеш Intellij
  2. Обновлен до Spring 2.3.0
  3. Добавлен

@ GetMapping (path = "/ {id}", производит = "application / json; charset = UTF-8")

0 голосов
/ 09 июля 2020

Запустите приложение со следующими аргументами:

mvn spring-boot:run -Drun.jvmArguments="-Dfile.encoding=UTF-8"

или вы можете попробовать установить на уровне jvm:

Добавить в файл конфигурации (для приложения /var/app/app.jar это будет /var/app/app.conf) под строкой:

export LANG='en_US.UTF-8'
...