我使用spring boot和spring boot starter hateoas开发了一个rest服务。我在定制ObjectMapper时遇到了一个问题。代码如下:
一个pplication.java
@Configuration
@Import(BillServiceConfig.class)
@EnableAutoConfiguration
@EnableEurekaClient
@ComponentScan({"com.bill"})
@EnableWebMvc
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class Application extends WebMvcConfigurerAdapter{
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.indentOutput(true).dateFormat(new SimpleDateFormat("MM-yyyy-dd"));
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
builder.configure(objectMapper);
return builder;
}
依赖关系:
dependencies {
compile "org.springframework.boot:spring-boot-starter-hateoas"
compile "org.springframework.boot:spring-boot-starter-ws"
compile "org.springframework.boot:spring-boot-starter-actuator"
账单java:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonRootName("bills")
public class Bill{
BillController.java:
public ResponseEntity<Resources<Resource<Bill>>> getBills(){
我得到的输出是:
{
_embedded: {
billList:
但是我需要“账单”代替“billList”。这是因为ObjectMapper没有被定制。我是否错过了任何配置,请在这个问题上帮助我。提前谢谢。
此问题的根源-使用Spring MVC中的默认ObjectMapper,而不是作者配置的ObjectMapper。这是因为@EnableWebMvc。
引自《Spring靴指南》
通常您会为Spring MVC应用程序添加@EnableWebMvc,但Spring Boot在类路径上看到spring-webmvc时会自动添加它。
然而,如果您这样认为,Spring MVC将创建自己的消息转换器集,而不会使用您的ObjectMapper。
虽然我这么晚才发表这个答案,但也许它会帮助别人。
我正在使用sping-boot1.5 RC1。如果您删除@EnableHypermediaSupport注释,只要您在类路径上有java时间模块,sping-boot就应该为您配置带有ISO 8601日期的sping-hateoas。
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
不管怎样,这对我有用。
如果需要进一步的自定义配置,请参阅http://github.com/spring-projects/spring-hateoas/issues/333
我注意到Spring Boot执行器只有在应用程序使用Spring MVC(DispatcherServlet)处理endpoint时才起作用。默认情况下,如果您在项目中添加了spring-boot-starter-web模块,则包含此servlet。 一旦这个servlet存在,类EndpointWebMvcAutoConfiguration将定制Spring MVC,以支持endpoint和其
在我的项目中有2个资源属性 1.application.properties 2. 应用开发.性能 此类使用开发的值属性 我使用 application-development.properties 作为我的项目资源 因此,我使用以下命令运行该项目: < code > mvn spring-boot:run-D spring . profiles . active = development 但是
我正在使用Rest Assured为我的spring boot项目做控制器测试。我们在序列化对象上使用Java 8 ZonedDateTime字段,在序列化对象上使用jackson 2字段。运行项目时,序列化按预期工作,但运行放心测试时,日期序列化不正确。我知道Rest Assured使用它自己的ObjectMapper配置,但我的问题是,无论我做什么,Rest Assured似乎都忽略了我的Ob
我想通过一个自定义的泛型unapply函数压缩我的计算器,该函数计算参数并在成功时返回值。 但是这失败了,错误 有什么方法可以实现这一点吗?我已经研究了类型标签,不适用方法的隐式转换,但我不知道如何将它们集成到这个问题中。如何正确定义Eval?
问题内容: 我找到了flask-jquery-ajax示例,其中用户从车辆“ Make”下拉菜单中选择一个项目,通过向AJAX请求选择的车型列表来填充车辆“ Model”下拉菜单。 我尝试用 bootstrap-select 替换下拉菜单,并且在第二个下拉菜单中添加 class =“ selectpicker form- control”后, 在选择了第一个下拉菜单后,不再填充任何内容。 这是HT
我有一些自定义角色,例如: 当使用'ROLE_USER'时,“spans”中的文本可以正常显示,但当使用其他角色时,文本无法显示。然后我在自定义角色中添加'ROLE_'前缀,它又变得正常了。 我尝试删除“ROLE\uu0”前缀约束,如下所示: 它也不起作用。知道如何删除强制的“ROLE\uuux”前缀吗?