//上下文
@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();
}
}
}
}
}

最新文章

  1. Java 计算数学表达式(字符串解析求值工具)
  2. .net断点续传的原理
  3. 静态页分页功能js代码
  4. 拖拽碰撞效果,高级浏览器下全部搞定(ie6-8还没有搞定)
  5. [rsync]——rsync文件同步和备份
  6. Silverlight客户端调用WCF服务难题解疑
  7. 15款免费WiFi入侵破解安全测试工具
  8. Linux APP源码级编译安装
  9. html 7.28
  10. Vold工作流程分析学习
  11. iOS 之 Quartz2D
  12. ie下常见的css兼容问题
  13. js浮点数的加减乘除
  14. ADO五大对象
  15. python全栈开发day103-python垃圾回收机制、mro和c3算法解析、跨域jsonp\CORS、Content-Type组件
  16. Python之路-(Django(csrf,中间件,缓存,信号,Model操作,Form操作))
  17. 【BZOJ4903】【UOJ#300】吉夫特(卢卡斯定理,动态规划)
  18. Android中fragment之间和Activity的传值、切换
  19. python执行selenium报错
  20. 【BZOJ】【3612】【HEOI 2014】平衡

热门文章

  1. Mac上离线安装rvm
  2. Codeforces Round #844 (Div. 1 + Div. 2, based on VK Cup 2022 - Elimination Round) A-D
  3. cordova第三方插件的创建,修改以及调试指南---真机调试,浏览器调试
  4. 今天遇到的报错Babel noteThe code generator has deoptimised the styling of ...as it exceeds the max of 500KB.
  5. Array.from的9大优美用途!!!看了不后悔哦~~~~
  6. Java 进阶P-5.3+P-5.4
  7. Java 进阶P-3.1+P-3.2
  8. 遗传算法求TSP问题
  9. 浅谈Python中的包
  10. docker05-dockerfile