【发布时间】:2018-01-25 19:25:59
【问题描述】:
我想在我的项目中使用 Jackson ObjectMapper 的配置版本(忽略空值和snake_case,也使用一些自定义模块)。
在我的大型项目中,我无法让 Spring MVC 实际使用此映射器。
build.gradle:
buildscript {
ext {
springBootVersion = '1.5.6.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter')
compile("org.springframework.boot:spring-boot-starter-jetty:${springBootVersion}")
compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.8.8'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8'
testCompile('org.springframework.boot:spring-boot-starter-test')
}
我的应用程序.yml:
spring:
application:
name: Jackson test
jackson:
property-naming-strategy: SNAKE_CASE
default-property-inclusion: non_empty
debug: true
一个容器类:
public class MyLocationEntity {
public String nameAndSnake;
}
一个配置类:
@Configuration
@EnableWebMvc
public class AppConfig {
}
还有一个控制器:
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private ObjectMapper objectMapper;
@RequestMapping(value = "/test", produces = "application/json")
public MyLocationEntity test() throws JsonProcessingException {
MyLocationEntity location = new MyLocationEntity();
location.nameAndSnake = "hello world";
String expexted = objectMapper.writeValueAsString(location);
return location;
}
}
如果我现在在调试器中查看expected 的值,它是{"name_and_snake":"hello world"}。
但是如果我让控制器跑通实际响应是{"nameAndSnake":"hello world"}。
当我删除 @EnableWebMvc 时,它可以工作。如何将已配置的映射器与 MVC 一起使用,而不删除 Web MVC 的其余自动配置?
【问题讨论】:
-
@EnableWebMvc禁用 Spring Boot 的 Web 自动配置。你在说哪个配置的映射器?自动配置的实例有什么问题? -
为什么要使用 EnableWebMvc?
-
@JBNizet 这只是显示错误的演示项目。在这个项目中,它什么也不做。在较大的项目中需要它。
-
这根本不能回答我的问题。为什么在更大的项目中需要它? EnableWebMvc 禁用 web mvc 自动配置。它没有启用它。阅读文档:docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…
-
M. Deinum 确实这么说,你不相信他……但无论如何,至少它让你阅读了文档。
标签: spring-mvc spring-boot jackson