//上下文
@Resource
private ApplicationContext applicationContext; @Bean
public void test(){
//扫描Controller
Reflections reflections = new Reflections("com.xzc.test.controller");
//获取所有注解为@controller的类
Set<Class<?>> clazzs = reflections.getTypesAnnotatedWith(Controller.class);
for (Class<?> clazz : clazzs) {
//获取所有方法
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
//获取注解为@Test的方法
if(method.isAnnotationPresent(Listener.class)){
//获取Test(自定义)注解
Test test= method.getAnnotation(Test.class);
//获取注解参数
String value = test.value();
try {
//从上下文中获取对象,如果直接使用clazz.则无法使用ioc
Object bean = applicationContext.getBean(clazz);
applicationContext.getAutowireCapableBeanFactory().autowireBean(bean);
//第一个个参数是调用该方法的对象,如果方法有参数,放在后面
method.invoke(bean,value);
} catch (InvocationTargetException | IllegalAccessException exception) {
//获取内部异常
Throwable cause = exception.getCause();
if(cause instanceof MyException){
//如果为自定义异常可以进行处理
}else{
exception.printStackTrace();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}
}

Java通过注解获取方法反射运行的更多相关文章

  1. java 对象转Map方法Demo

    /** * 用于对Object进行解析并且转换成Map键值对的形式 * */ public class ObjectUtils { private static final String JAVAP ...

  2. Java自定义注解和运行时靠反射获取注解

    转载:http://blog.csdn.net/bao19901210/article/details/17201173/ java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编 ...

  3. java 编程基础 Class对象 反射 :获取类的构造方法,方法,成员变量,内部类,外部类,父类,实现的接口,修饰符等...

    类 Class  每个类被加载之后,系统就会为该类生成一个对应的Class对象,通过该Class对象就可以访问到JVM中的这个类. 我们在Java中获取Class对象一般有三种方式: (1), 使用C ...

  4. JAVA反射系列之Field,java.lang.reflect.Field使用获取方法

    JAVA反射系列之Field,java.lang.reflect.Field使用获取方法.   转载https://my.oschina.net/u/1407116/blog/209383 摘要 ja ...

  5. Java反射《四》获取方法

    package com.study.reflect; import java.lang.reflect.InvocationTargetException; import java.lang.refl ...

  6. java 反射机制之 getDeclaredMethod()获取方法,然后invoke执行实例对应的方法

    关于反射中getDeclaredMethod().invoke()的学习,来源于项目中的一行代码: SubjectService.class.getDeclaredMethod(autoMatchCo ...

  7. Java 反射理解(三)-- Java获取方法信息

    Java 反射理解(三)-- Java获取方法信息 基本的数据类型.void关键字,都存在类类型. 举例如下: public class ClassDemo2 { public static void ...

  8. java reflect反射获取方法变量参数

    类的成员包含变量(Field),方法(Method),构造器(Constructor) 类定义 package Reflect; public class MyTest { public int a; ...

  9. java 反射获取方法返回值类型

    //ProceedingJoinPoint pjp //获取方法返回值类型 Object[] args = pjp.getArgs(); Class<?>[] paramsCls = ne ...

  10. java反射子之获取方法信息(二)

    一.获取方法 1.方法作用. 2. 二.获取方法信息.(修饰符,返回值,方法名称,参数列表,抛出的异常). ############################################## ...

随机推荐

  1. Java反射获取方法参数名 IDEA配置 Maven

    默认情况下无法获得具体的参数名,只能得到arg0, arg1等. 进行如下配置即可通过反射获得具体的参数名. -parameters 如果是Maven项目,还需要在pom.xml文件中增加如下配置 & ...

  2. 04HDFS简介

    HDFS简介 一.什么是HDFS HDFS全称是Hadoop Distributed File System,简称HDFS.这是一个分布式文件系统,当数据规模大小超过一台物理计算机的存储能力时,就有必 ...

  3. Unity_UIWidgets - 组件Container

    Unity_UIWidgets - 组件Container Container 构造 效果 结语 QQ 今日无推荐 Unity_UIWidgets - 组件Container 上周给大家讲完了Scaf ...

  4. 一小时学会微信小程序

    一小时学会微信小程序 目录 一.小程序概要 1.1.发展历史 1.2.小程序的诞生 二.微信小程序介绍 三.开发微信小程序的软件下载与初步配置  3.1.获取微信小程序的AppID 3.2.下载安装微 ...

  5. wsl ubuntu vscode 安装 Fira Code

    如果使用windows terminal(其实就是powershell)那么只需要在windows 中安装 Fira Code 即可,但是如果需要让wsl 中的vscode 也用Fira Code 就 ...

  6. C-07\字符串的输入输出及常用操作函数

    一.算法优化: 减少分支优化 // 求绝对值 int MyAbs(int n) { if (n < 0) { n = ~n + 1; } return n; } // 优化 int MyAbs( ...

  7. opencv::parallel_for_使用说明

    直接上代码 #include <opencv2/opencv.hpp> #include <iostream> #include <functional> usin ...

  8. 树莓派3B+开启wifi

    1.打开树莓派配置 sudo raspi-config 2.选择 localisation options 3.选择 change Timezone,在里面选择亚洲ASIAN,里面选择地址,我选的上海 ...

  9. 权限维持之:SID History 域控权限维持

    目录 1 SID 作用 2 利用 SID History 操作过程 3 SID History 权限维持的防御 1 SID 作用 ​ 每个用户都有自己的SID,SID的作用主要是跟踪安全主体控制用户连 ...

  10. gmgo国密算法库

    gmgo国密算法库 一.背景介绍 基于go1.17.5实现的国密算法库,包括: sm2 : 基于emmansun/gmsm的sm2部分实现部分扩展. sm3 : 基于emmansun/gmsm的sm3 ...