如何对 Spring 数据 Rest 上的 GET/find 中的实体进行计算?
How to do a calculation on an entity in a GET/find on Spring Data Rest?
我正在使用 @RepositoryRestResource
工具,但我想在每次用户执行读取操作 GET、查找等时对瞬态字段进行计算(取决于外部服务)。
如果列表中只有一个 AfterGet/AfterFind 事件,我可以通过扩展 AbstractRepositoryEventListener
来处理修改
有什么干净的建议吗?
我通过@Alan Hay 的建议找到了方法。
@Entity
@EntityListeners(TransientFieldResolver.class)
public class Entity {
private Long id;
private String transientField;
}
@Component
public static class TransientFieldResolver {
private static ExternalService externalService;
@Autowired
public void setExternalService(ExternalService externalService) {
TransientFieldResolver.externalService = externalService;
}
@PostLoad
public void onPostLoad(final Entity entity) {
if (Objects.isNull(entity.getTransientField())) {
TransientFieldResolver.externalService.fillTransientField(entity);
}
}
}
我正在使用 @RepositoryRestResource
工具,但我想在每次用户执行读取操作 GET、查找等时对瞬态字段进行计算(取决于外部服务)。
如果列表中只有一个 AfterGet/AfterFind 事件,我可以通过扩展 AbstractRepositoryEventListener
有什么干净的建议吗?
我通过@Alan Hay 的建议找到了方法。
@Entity
@EntityListeners(TransientFieldResolver.class)
public class Entity {
private Long id;
private String transientField;
}
@Component
public static class TransientFieldResolver {
private static ExternalService externalService;
@Autowired
public void setExternalService(ExternalService externalService) {
TransientFieldResolver.externalService = externalService;
}
@PostLoad
public void onPostLoad(final Entity entity) {
if (Objects.isNull(entity.getTransientField())) {
TransientFieldResolver.externalService.fillTransientField(entity);
}
}
}