@jsonRootName不能使用spring boot starter hateoas

时间:2015-04-01 14:53:05

标签: java spring spring-mvc spring-boot spring-hateoas

我正在使用spring-boot和使用spring-Hateoas开发一个rest应用程序。我写的DTO是:

Bill.java

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonRootName("bills")
public class Bill{

Depedencies:

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"
compile "org.springframework.cloud:spring-cloud-starter-eureka:${springCloudVersion}"

testCompile("org.springframework.boot:spring-boot-starter-test")
}

Application.java:

@Configuration
@Import(BillServiceConfig.class)
@EnableAutoConfiguration
@EnableEurekaClient
@ComponentScan({"com.billing"})
@EnableWebMvc
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class Application {

BillController.java:

 @RequestMapping(method = RequestMethod.GET, value = "")
 public ResponseEntity<Resources<Resource<Bill>>> getBills(@PathVariable String billUid)

我使用的spring-boot版本是1.2.2。我得到的输出是

`_embedded: {
BillList:
{`

这里的json Root名称是BillList。但我需要它作为“账单”而不是“BillList”。任何人都可以帮助解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:2)

_embedded子句中的键实际上是关系名称。因此,它们通过Spring HATEOAS中的RelProvider抽象获得。自定义它们的最简单方法是使用@Relation注释域类型,并定义项目和集合关系所需的关系名称。

获取_embedded子句中使用的正确复数的简便方法是将Evo Inflector JAR添加到类路径中,如文档here所述。