我试图按照Repository模式重构我的一个项目的现有代码库,这样我就可以让项目更加可重用和可测试。
我编写了服务,存储库,当我尝试在服务层上设置身份验证,授权和事务性注释时,我遇到了问题。 这些注释仅适用于控制器级别,但不适用于服务层,因此我想要一种注释服务方法的方法。 有可能这样做吗?
如果有人在Play框架上使用存储库模式向我指出示例或更好的方式继续进行,那将会很有帮助。
答案 0 :(得分:0)
身份验证和授权仅对请求有意义,因此除了控制器方法之外,将它们粘贴在任何内容上都无法正常工作。
Transactional只是一个帮助程序注释,用于将整个请求包装在JPA事务中。通常建议你自己完成包装,所以你真的不需要它。取自the documentation的示例:
@Inject
private JPAApi jpaApi;
public void updateSomething() {
// do something with the entity manager, per instance
// save, update or query model objects.
jpaApi.withTransaction(() -> {
EntityManager em = jpaApi.em();
Query query = em.createNativeQuery("update people set active = 1 where age > 18");
query.executeUpdate();
});
}