【问题标题】:Modifying model during serialization在序列化期间修改模型
【发布时间】:2019-08-23 08:20:24
【问题描述】:

我使用 Spring Boot,并且我有一个存储 URL 路径的实体,并且由于将来可能会更改域地址,所以我没有将完整的 URL 存储到数据库中。 这是我的实体:

@Entity
public class TestModel
{
    private String urlPath;

    @Transient
    private String fullUrl;

    //getters and setters...
}

我需要在序列化模型期间将域地址与urlPath 连接并将其值存储到fullUrl 字段中。
我知道我可以在 fullUrl 字段的 getter 方法中执行此操作,但是应该从配置中读取域地址,并且模型不应该有任何关于业务逻辑的内容。
实施它的最佳做法是什么?

【问题讨论】:

    标签: java spring spring-boot jpa


    【解决方案1】:

    使用@PrePersist、@PreUpdate 注释。 参见例如https://www.baeldung.com/database-auditing-jpa

    如果您修改值的业务逻辑存在于 外部 bean,您可以使用 @EntityListeners(MyEntityListener.class) 并在那里使用@PrePersist、@PreUpdate 注释。

    因为那些实体监听器类不是 bean 而是 POJO 要将外部 bean 自动装配到它们中,您可以使用其中一种策略 这里提到:Injecting a Spring dependency into a JPA EntityListener 让您的业务逻辑 bean 自动装配到这些实体侦听器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 2018-06-02
      • 2023-03-25
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 2015-07-13
      相关资源
      最近更新 更多