相关疑难解决方法(0)

Spring配置@ResponseBody JSON格式

想象一下,我在Spring 3 @Controller中有这个带注释的方法

@RequestMapping("")
public @ResponseBody MyObject index(@RequestBody OtherObject obj) {
    MyObject result = ...;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

但我需要配置输出json格式,就像我在做:

ObjectMapper om = new ObjectMapper();
om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, true);
om.getSerializationConfig()
        .setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT);
om.getSerializationConfig()
        .set(SerializationConfig.Feature.INDENT_OUTPUT, false);
Run Code Online (Sandbox Code Playgroud)

有没有办法配置这种行为?

我发现了几个相关的问题,但我不确定如何使它们适应我的具体情况:

  1. spring responsejson with responsebody
  2. 谁在S​​pring MVC中设置响应内容类型(@ResponseBody)

谢谢 !

java spring spring-mvc jackson

39
推荐指数
5
解决办法
12万
查看次数

在独立的 MockMvc 中测试 @Validated RestController 不起作用

我用 @Validated 注释了 RestController 以验证路径变量/请求参数:

@RestController
@Validated
public class MainController implements ApplicationListener<ApplicationReadyEvent> {

    @Autowired
    private CarsService carsService;

    @ExceptionHandler
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public void handleException(ConstraintViolationException ex) {}

    @GetMapping(
            value = "/",
            produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> getCars(
            @RequestParam(value = "offset", defaultValue = "0") @PositiveOrZero
                    Integer offset,
            @RequestParam(value = "limit", defaultValue = paginationLimitDefault)
            @Positive @Max(paginationLimitMax)
                    Integer limit) {
        ...
        ...
        Map responseBody = new HashMap<String, Object>();
        responseBody.put("offset", offset);
        responseBody.put("limit", limit);
        return ResponseEntity.status(HttpStatus.OK).body(responseBody);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想使用独立的 mockMvc 对控制器级别进行单元测试:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@ActiveProfiles("test")
public class TestMainController { …
Run Code Online (Sandbox Code Playgroud)

java spring spring-validator spring-boot spring-web

5
推荐指数
1
解决办法
2705
查看次数