获取所有springmvc中注解RequestMapping
2016-05-05 10:07
295 查看
思路是检测ClassLoader中所有已加载的类,遍历是否有RequestMapping注解,对存在的逐个打印出来
@Test
public void annotationScan() throws IllegalAccessException {
Field field = null;
try {
field = ClassLoader.class.getDeclaredField("classes");
field.setAccessible(true);
Vector<Class> classes=(Vector<Class>) field.get(this.getClass().getClassLoader());
List<Class> cl=new ArrayList<>(classes);
Iterator<Class> itor=cl.iterator();
while(itor.hasNext()){
Class c=itor.next();
if(c.getAnnotation(RequestMapping.class)!=null){
RequestMapping req= (RequestMapping)c.getAnnotation(RequestMapping.class);
String[] bath=req.path().length>0?req.path():req.value();
if(bath.length==0){
continue ;
}
Method[] ms=c.getDeclaredMethods();
for(Method m : ms){
RequestMapping rm=m.getAnnotation(RequestMapping.class);
if(rm==null){
continue ;
}
String[] bath2=rm.path().length>0?rm.path():rm.value();
if(bath2.length==0){
continue ;
}
System.out.println(bath[0]+bath2[0]);
}
}
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
@Test
public void annotationScan() throws IllegalAccessException {
Field field = null;
try {
field = ClassLoader.class.getDeclaredField("classes");
field.setAccessible(true);
Vector<Class> classes=(Vector<Class>) field.get(this.getClass().getClassLoader());
List<Class> cl=new ArrayList<>(classes);
Iterator<Class> itor=cl.iterator();
while(itor.hasNext()){
Class c=itor.next();
if(c.getAnnotation(RequestMapping.class)!=null){
RequestMapping req= (RequestMapping)c.getAnnotation(RequestMapping.class);
String[] bath=req.path().length>0?req.path():req.value();
if(bath.length==0){
continue ;
}
Method[] ms=c.getDeclaredMethods();
for(Method m : ms){
RequestMapping rm=m.getAnnotation(RequestMapping.class);
if(rm==null){
continue ;
}
String[] bath2=rm.path().length>0?rm.path():rm.value();
if(bath2.length==0){
continue ;
}
System.out.println(bath[0]+bath2[0]);
}
}
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
相关文章推荐
- 详解JDK 5 Annotation 注解之@Target的用法介绍
- java教程之java注解annotation使用方法
- Java中注解的工作原理
- Java注解之Retention、Documented、Inherited介绍
- spring aop两种配置方式
- Restful传递数组参数及注解大全
- Java @Deprecated注解的作用及传递性
- 全面解析Java中的注解与注释
- 小议Java中@param注解与@see注解的作用
- Java注解详细介绍
- 详解Java编程中Annotation注解对象的使用方法
- JDK 5 提供的注解:Target、Inherited和Documented的区别
- SpringMVC restful 注解之@RequestBody进行json与object转换
- 基于Java 注解(Annotation)的基本概念详解
- Spring常用注解汇总
- Java中三种简单注解介绍和代码实例
- 详解Java Spring各种依赖注入注解的区别
- 详解Java注解教程及自定义注解
- 一个奇怪的异常,SSH使用注解方式
- struts2注解配置注意事项