当前位置: 首页 > news >正文

java通过反射,动态调用指定注解的方法


@SpringBootTest
@RunWith(SpringRunner.class)
public class AnnoTest {@Autowiredprivate ApplicationContext applicationContext;@Testpublic void test(){// 获取有指定注解的BeanMap<String, Object> annotationMap = applicationContext.getBeansWithAnnotation(CacheConfig.class);for (Map.Entry<String, Object> map : annotationMap.entrySet()){String key = map.getKey();Object bean = map.getValue();
//            通过obj.getClass().getSuperclass()来获取代理类的真实类Class<?> clazz = bean.getClass().getSuperclass();Method[] declaredMethods = clazz.getDeclaredMethods();for (Method method : declaredMethods) {// 找到有对应的注解的方法if (method.isAnnotationPresent(Cacheable.class)) {// 判断方法名是否是指定的String name = method.getName();if("getUser".equals(name)){System.out.println("找到目标方法");try {Object invoke = method.invoke(bean, 523L);System.out.println(invoke);} catch (Exception e) {e.printStackTrace();}}}}}}}

需要注意的是:由于使用了 CGLIB,所以需要使用 “bean.getClass().getSuperclass()” 才可以获取到真实的类。如果没有使用CGLIB,直接使用 “bean.getClass()”即可获取到真实的类。

http://www.lryc.cn/news/129063.html

相关文章:

  • QT学习方法
  • C++中的类型擦除技术
  • 激光雷达 01 线数
  • PHP 公交公司充电桩管理系统mysql数据库web结构apache计算机软件工程网页wamp
  • HTML <strong> 标签
  • 机器学习笔记 - 使用 ResNet-50 和余弦相似度的基于图像的推荐系统
  • Codeforces Round 881 Div.3
  • Kubernetes(K8s)从入门到精通系列之十六:linux服务器安装minikube的详细步骤
  • JDBC配置文件抽取-spring11
  • el-form组件相关的一些基础使用
  • 全新 – Amazon EC2 M1 Mac 实例
  • java # Servlet
  • Linux内核的两种安全策略:基于inode的安全与基于文件路径的安全
  • 有哪些前端开发工具推荐? - 易智编译EaseEditing
  • 【JAVA】抽象类与接口
  • 人脸图像处理
  • Docker入门——实战图像分类
  • 【HarmonyOS北向开发】-02 第一个程序测试
  • 关于小程序收集用户手机号行为的规范
  • js判断手指的上滑,下滑,左滑,右滑,事件监听 和 判断鼠标滚轮向上滚动滑轮向下滚动
  • ES 一些简单 的查询注意事项
  • LeetCode //C - 57. Insert Interval
  • android手势事件
  • [网络安全学习篇01]:windowsxp、windows2003、windows7、windows2008系统部署(千峰网络安全视频笔记)
  • CANoe自动化工程的搭建
  • 第6章:支持向量机
  • ROS机器人启动move base时代价地图概率性无法加载的原因及解决方法
  • 快速上手PyCharm指南
  • 数字图像处理 - 图像处理结合机器学习的应用示例
  • Linux命令200例:zip和unzip用于压缩和解压文件(常用)