繁体   English   中英

如何为Spring-rest构建自定义@Projections?

[英]How to build custom @Projections for spring-rest?

spring-data-rest可以直接公开@Entity域对象,甚至可以提供DTO投影,如下所示:

@Projection(name = "personDTO", types = { Person.class })
public interface PersonDTO {

  @Value("#{target.firstName} #{target.lastName}") //SPeL
  String getFullName();
}

问:如果我想自己只构建一些 dto字段怎么办? 例如,在firstname字段上有某种条件,并根据这个或其他方式填充它。 那可能吗?

Spring提到了一个例子,但不幸的是它并不完整: https//spring.io/blog/2014/05/21/what-s-new-in-spring-data-dijkstra

@Projection(name = "summary", types = Order.class)
interface OrderSummary {
  @Value("#{@shop.calculateTotal(target)}")
  Money getTotal();
}

这里逻辑被导出到@shop.calulcateTotal() ,但他们没有在示例中告诉这个@shop bean是如何注入的。 我假设这是一个@Service ,但不知道如何获取它。

在您发布的示例下面说。

https://spring.io/blog/2014/05/21/what-s-new-in-spring-data-dijkstra

对于高级用例,您甚至可以使用@Value配置投影方法,以将SpEL表达式的结果返回给编组程序。 在我们的示例中,我们在名为shop的Spring bean上调用一个方法,并将代理目标实例交给它来计算订单总数,这可以考虑回扣,税收等。

由于您的预测已经由spring管理,因此您不需要注入它。 春天的魔法为你照顾它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM