我使用Spring Framework,版本4.1.6,使用Spring Web服务,没有Spring Boot.为了学习这个框架,我正在编写一个REST API并进行测试,以确保从命中端点收到的JSON响应是正确的.具体来说,我想调整ObjectMapper的PropertyNamingStrategy'用下划线小写’命名策略使用.
我正在使用Spring的博客上详细介绍的方法来创建一个新的ObjectMapper并将其添加到转换器列表中.具体如下:
package com.myproject.config;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import org.springframework.context.annotation.*;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.List;
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Jackson2ObjectMapperBuilder builder = jacksonBuilder();
converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
}
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.propertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
return builder;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我运行以下测试(使用JUnit,MockMvc和Mockito)来验证我的更改:
package com.myproject.controller;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock; …Run Code Online (Sandbox Code Playgroud)