我正在寻找一种方法拦截所有发送到所有已定义方法的请求。
(定义= JpaRepository 接口上的任何内容)。
因此,例如,当有人调用 repo.findAll() 时,我将能够在之前和之后运行通用代码。
(通用=所有实体的相同代码)。
所以我所做的就是在 JpaRepository 中创建一个泛型类并实现方法,然后拦截所有请求。
@Repository
public class BaseJpaRepository<T> implements JpaRepository<T, Long> {
@Autowired
private JpaRepository<T, Long> repository;
@Override
public List<T> findAll() {
//run some code here
List<T> res = repository.findAll();
//run some code here
return res;
}
// all other methods here...
}
这是注入服务的接口:
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Long> {
}
这是豆子
@Repository
public class UserRepositoryBean extends BaseJpaRepository<User> implements JpaRepository<User, Long> {
}
问题是private JpaRepository<T, Long> repository;没有注入,我认为这是因为 spring 在引导时需要实体类型。
我还尝试将显式类型注入到构造函数 ifUserRepositoryBean并将其传递给父级。但它并不满意。
@Repository
public class UserRepositoryBean extends BaseJpaRepository<User> implements JpaRepository<User, Long> {
public UserRepositoryBean(JpaRepositry<User, Long> repo){super(repo);}
}
有什么方法可以拦截所有的 Spring jpa 方法吗?
婷婷同学_
相关分类