Spring存储库vs Dao

时间:2014-06-12 10:46:10

标签: spring spring-security spring-data dao spring-data-jpa

我有关于Spring的问题。 我的应用程序中有一些存储库(扩展JpaRepository),我在客户端(JavaFx)中使用它来传输数据。 在每个存储库中,我都有一个@PreAuthorize("hasAnyRole('ROLE')")标记,阻止客户端在没有身份验证的情况下调用这些方法。

直到这里,一切都很完美,但我有一个设计问题。现在我应该调用一些在任务中的DB上运行的方法到我的服务器中。 我无法调用存储库的方法,因为否则我有一个例外,因为服务器无法登录自己。

所以我读了一些关于存储库和Dao之间区别的东西,我想问唯一的方法是创建一个没有@PreAuthorize标签的Dao。 我不太喜欢这个解决方案,因为这样与db交互的代码就是两个不同的地方。因此,如果您有CustomerRepository,那么您还必须拥有CustomerDao。

你有更好的主意吗?谢谢!

1 个答案:

答案 0 :(得分:3)

为了从服务器调用存储库方法,您需要一个SecurityContext。

以下是如何创建它:

http://www.petrikainulainen.net/programming/spring-framework/spring-from-the-trenches-invoking-a-secured-method-from-a-scheduled-job/