覆盖弹簧数据保存方法
我已经创建了基础知识库,它扩展了CrudRepository
并标记为@NoRepositoryBean
。我所有的其他库扩展BaseRepository。覆盖弹簧数据保存方法
如何覆盖我的BaseRepository中的save
方法以产生自定义错误消息?例如,我需要捕获所有DataIntegrityViolationException
以在前端显示一些正确的消息。任何帮助赞赏。
UPDATE
例如,如果您创建春端点(@Endpoint
),那么你可以创建一个实现org.springframework.ws.server.EndpointInterceptor
一类,你可以监控所有的流量。是否有类似的课程可以监控所有与数据相关的流量?
正如我的评论所述,重写'保存'将无法实现您的目标。 JPA可能会在你的代码中抛出异常。这是JPA的问题之一。
我想你可以覆盖Spring的一些中心方法来实现你的目标,但这并不是Spring的工作原理。
相反,您基本上注册了您的异常处理,它会在需要时由Spring调用。
有an article about this by Baeldung,这看起来很有前途,并且被Google高估。
非常感谢,这部分内容:“新的解决方案3 - 新的@ControllerAdvice(Spring 3.2及以上版本)”解决了我的问题。 – JamesLinux
为什么你需要重写'save'方法呢?你可以在你的服务中做到这一点,或者只是使用一个方面为你做。 –
在使用JPA时,通过覆盖save方法实际上是不可能的,因为保存可能永远不会被调用,并且在事务提交时抛出异常(冲刷EM) –
如果我在我的服务中覆盖它,那么我必须为我拥有的每个存储库创建一项服务。也许我不必重写save方法,而是覆盖所有与存储库有关的流量的其他类。 – JamesLinux