当前位置: 首页 > 面试题库 >

Spring Data Rest:未调用RepositoryEventHandler方法

须景辉
2023-03-14
问题内容

我试图将Spring Data REST文档中所述的RepositoryEventHandler添加到如下所示的REST存储库中:

@RepositoryRestResource(collectionResourceRel = "agents", path = "/agents")
public interface AgentRepository extends CrudRepository<Agent, Long> {
    // no implementation required; Spring Data will create a concrete Repository
}

我创建了一个AgentEventHandler:

@Component
@RepositoryEventHandler(Agent.class)
public class AgentEventHandler {

    /**
     * Called before {@link Agent} is persisted 
     * 
     * @param agent
     */
    @HandleBeforeSave
    public void handleBeforeSave(Agent agent) {

        System.out.println("Saving Agent " + agent.toString());

    }
}

并在@Configuration组件中声明它:

@Configuration
public class RepositoryConfiguration {

    /**
     * Declare an instance of the {@link AgentEventHandler}
     *
     * @return
     */
    @Bean
    AgentEventHandler agentEvenHandler() {

        return new AgentEventHandler();
    }
}

当我发布到REST资源时,实体会保留下来,但永远不会调用handleBeforeSave方法。我想念什么?

我正在使用:Spring Boot 1.1.5.RELEASE


问题答案:

有时,明显的错误会被忽略。

*将Spring Data REST资源发布到 *POST之后
,发出一个BeforeCreateEvent。要捕获此事件,必须使用@HandleBeforeCreate而不是@HandleBeforeSave注释方法handleBeforeSave(后者在PUT和PATCH
HTTP调用中被调用)。

现在,我的(清理后的)演示应用程序已成功通过测试



 类似资料:
  • 问题内容: 我只是实现了继承JPanel的类,如下所示 Orpanel类正在加载图像并调整其自身大小。 这是问题。 调用JFrame的setContentpane(Orpanel的实例)使其工作正常,但是当我将Orpanel附加到JFrame时,调用add()方法而不是setContentpane(我知道setcontentpane并不意味着attach ..反正),它就行不通了。 终于弄清楚了当

  • 我已经尝试了这个平台上提供的所有答案,但没有成功。我正在执行这个命令行运行程序,但是run方法没有调用。 我感谢你的帮助。 谢谢 我尝试了以下解决方案,但得到了这个例外。 第一:在您的引导类(具有SpringApplication.run(…,args)的主方法的类)中,您可以在@SpringBootApplication注释处添加属性scanBasePackages: @SpringBootAp

  • 我在一个名为seedrecord的对象和一个名为FielliateLink的对象之间有一个manytomany关系。为了删除FielliateLink,我需要首先从每个SeedRecord的FielliateList中删除对它的引用。之后,我使用spring JParepository的delete方法删除对象。因为我的服务(FiniliateLinkService)中有不同的删除方法,所以我决定

  • 我想在地图活动中添加标记,它的位置是从Firebase实时数据库中检索到的。 我尝试在和方法中实现,并且当用户登录时(尽管没有错误,但它们都不起作用),我还使用logcat显示位置坐标,但它的值不显示。 这是我的数据库

  • 我有一个里面有片段和IntentService的活动。当我单击按钮对话框片段打开,我输入我的数据。之后,我单击确定,它调用getActive()。启动服务(意图)。服务通过本地广播管理器调用sendBroadcast(意图),但没有调用onAccess()方法。怎么了?这是我的广播接收器 我在这里登记 我的记忆法 还有我在服务中发送广播的方法

  • 我有Android的代码 其中“timeUntilStageTwo”是直到第二天的某个小时的时间,所以我想在每秒钟(在onTick方法中)刷新文本视图并更改其文本。问题是这个onTick方法只被调用几次,然后就完全停止被调用了,这是为什么呢?关键是我想在活动中做一个计时器,直到给定的小时