Как настроить CharacterEncodingFilter в SpringBoot?

Я столкнулся с некоторыми проблемами кодирования при обучении Spring Boot; Я хочу добавить CharacterEncodingFilter, например Spring 3.x. просто так:

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Ответы

Ответ 1

Пример кода для вашего класса Application.java, как предлагается в комментариях выше:

@Bean
public FilterRegistrationBean filterRegistrationBean() {
    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
    characterEncodingFilter.setForceEncoding(true);
    characterEncodingFilter.setEncoding("UTF-8");
    registrationBean.setFilter(characterEncodingFilter);
    return registrationBean;
}

Ответ 2

Так как Spring Загрузка 1.4.2 регистрация собственного CharacterEncodingFilter будет работать ТОЛЬКО ЕСЛИ вы отключите Spring собственный экземпляр этого bean, установив spring.http.encoding.enabled=false в application.properties.

Однако можно решить эту проблему без создания экземпляра фильтра, добавив эти параметры в application.properties:

# Charset of HTTP requests and responses. Added to the "Content-Type" header if not set explicitly.
spring.http.encoding.charset=UTF-8
# Enable http encoding support.
spring.http.encoding.enabled=true
# Force the encoding to the configured charset on HTTP requests and responses.
spring.http.encoding.force=true

Источник: Приложение A. Общие свойства приложения

Ответ 3

Я думаю, что нет необходимости в объяснении писать следующие свойства в файле application.properties:

spring.http.encoding.charset = UTF-8

spring.http.encoding.enabled = истина

spring.http.encoding.force = истина

Вместо этого, если вы перейдете к pom.xml в своем приложении, и если у вас есть следующее, тогда spring сделает необходимый.

Свойство