我有一个 spring boot 和 spring 数据设置 (@Data)。当一个实体的属性更改时,我需要执行一些操作。我正在尝试使用观察者模式,所以当我们从代码中调用该属性的 setter 时,我在其中添加了 stateChanged。您认为这会按预期工作,还是 spring 在幕后调用 setter ?
最佳答案
Spring绝对不是时不时调用这些setter。
要在实体更新保存在数据库中之前立即执行您的自定义代码,您可以在实体类中的方法上使用@PreUpdate 注释,或者您可以使用此方法拥有更高级别的抽象实体类,如果您的@ PreUpdate 代码相同。
@PreUpdate
public void onPreUpdate() {
//your custom code here
}
这样做您可以从您的 setter 中删除 stateChanged 调用。
关于java - 实体上的观察者并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43340161/