如何对 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);
        }
    }
}