java - 记录实际的存储库类而不是 JPARepository 的 CrudRepository
问题描述
前注:我真的很惊讶和恼火,为什么我找不到这个简单的东西。
public Object interceptMethod(ProceedingJoinPoint joinPoint) throws Throwable {
joinPoint.getTarget(); //returns SimpleJpaRepository
joinPoint.getSignature().getDeclaringTypeName(); //Returns CrudRepository
}
如何获得实际的存储库名称?
解决方案
获取实际存储库名称的一种方法
@Before("execution(* org.sec3.jpa.bean.*.deleteById(*)) && target(bean)")
public void getRepositoryName(JoinPoint jp , Object bean ) throws Exception {
Advised advised = (Advised) bean;
for(Class<?> clazz : advised.getProxiedInterfaces())
System.out.println(clazz);
}
将打印
interface org.sec3.jpa.bean.TestEmployeeRepository
interface org.springframework.data.repository.Repository
interface org.springframework.transaction.interceptor.TransactionalProxy
测试员工存储库
package org.sec3.jpa.bean;
import org.springframework.data.repository.CrudRepository;
public interface TestEmployeeRepository extends JpaRepository<JpaEmployee, Long> {
}
我在这里对类似问题的回答
推荐阅读
- javascript - 如何根据内容是大写还是小写来应用类
- mysql - 如何将自定义参数添加到 Doctrine Column 类型
- android - 爱普生打印机 32 位和 64 位策略问题
- python - 如何加载带有自定义损失的模型?
- xml - 在 XSLT 中使用 IF 函数来确定字段是否为空白,如果是则添加文本常量
- javascript - 生成 Id 的服务器与客户端
- google-oauth - Google People API - 如何获取特定大小的用户个人资料照片,如果不是.jpg而是.png
- python - 熊猫布尔系列的元素逻辑自动组合
- html - 粘贴 html 签名时 Web 邮件输出出错(预期输出与原始输出的差异)
- c++ - 提升标准 C++ 中等效的共享容器迭代器