[英]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.