注解内容提取(类上、方法上)
来源:互联网 发布:7月进出口数据 编辑:程序博客网 时间:2024/05/29 04:03
了解自定义注解详细解释
开头总结(具体代码在下面)
方法上的注解内容可以直接获取、类上的需要强转
方法上自定义注解内容提取
/** * Log代表method所在类 */String doType = method.getAnnotation(Log.class).doType();
类上自定义注解内容提取
/** * clazz代表有Module这个自定义注解的类 */String value = (Module)clazz.getAnnotation(Module.class).value();
//拆分写法Annotation annotation = clazz.getAnnotation(Module.class);// 获取类上指定的 注解Module module = (Module) annotation;// 类上的注解需要强转String value = module.value();// 获取注解内容
方法上的自定义注解
自定义注解
/** * 自定义日志注解 * @author Kuwei * ElementType.METHOD 表明是方法上使用的注解 */@Target({ElementType.PARAMETER, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Log { /** 要执行的操作类型比如:add操作 **/ String doType() default ""; /** 要执行的具体操作比如:添加用户 **/ String doName() default "";}
注解使用
@Controller@RequestMapping("bankLogCtrl")public class BankLogController { @RequestMapping("getLogs") @Log(doType = "select",doName = "日志列表") public @ResponseBody Map<String,Object> getLogs(Integer page) throws Exception { ... return map; }}
注解内容提取
@After("controllerAspect()") public void after(JoinPoint joinPoint) throws Throwable { try { String targetName = joinPoint.getTarget().getClass().getName(); // 目标类全路径名 String methodName = joinPoint.getSignature().getName(); // 目标方法名(正在访问的方法) Object[] arguments = joinPoint.getArgs(); // 方法参数:数组类型 Class targetClass = Class.forName(targetName); // 反射得到目标类 Method[] methods = targetClass.getMethods(); // 反射得到目标类的所有方法 String doType = ""; String doName = ""; for (Method method : methods) { if (method.getName().equals(methodName)) { Class[] clazzs = method.getParameterTypes(); if (clazzs.length == arguments.length) { //方法上的注解内容提取 doType = method.getAnnotation(Log.class).doType(); doName = method.getAnnotation(Log.class).doName(); break; } } } }
类上的自定义注解
自定义注解
/** * 自定义模块注解 * @author Kuwei * ElementType.TYPE 表明类上使用的注解 */@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Module { String value() default "";}
注解使用
@Module("登录模块")@Controller@RequestMapping("bankLogCtrl")public class BankLogController { ...}
注解内容提取
@After("controllerAspect()") public void after(JoinPoint joinPoint) throws Throwable { String targetName = joinPoint.getTarget().getClass().getName(); // 目标类全路径名 Class clazz= Class.forName(targetName); // 反射得到目标类 try { // 判断是否有注解 boolean has = clazz.isAnnotation(); if (has) { // 获取类上指定的 注解 Annotation annotation = clazz.getAnnotation(Module.class); // 类上的注解需要强转 Module module = (Module) annotation; // 获取强 转之后类上的方法名字 exception_model_name = module.value(); } } catch (ClassNotFoundException e1) { e1.printStackTrace(); } }
阅读全文
0 0
- 注解内容提取(类上、方法上)
- 获取类的方法上的所有方法上的注解(二)
- 动态代理获取方法上的注解(Retrofit框架必备内容)
- 用正则表达式提取网页上表格的内容
- 获取类的方法上的所有方法上的注解
- java 类,变量,方法上注解值的获取
- Java获取类、方法、属性上的注解
- springmvc 在方法上使用 @ModelAttribute 注解
- 方法上spring事物注解失效问题
- 方法上注解的的测试
- springMVC-注解开发(上)
- 详解Java注解(上)
- 利用梯度方向在图像上提取直线的方法
- 提取图片上文字的两种方法
- spring aop获取目标对象的方法对象(包括方法上的注解)
- spring aop获取目标对象的方法对象(包括方法上的注解)
- 地图注解(地图上的大头针)
- 基于注解的 Spring MVC(上)
- RxJava、RxAndroid中的几个线程控制器
- 对于上限为int,java.lang.Object 的类型变量 T
- 【Java】List和String [] 的相互转换
- DBExportDoc-For-MySQL连接数据库报错的解决
- Springboot 配置详解
- 注解内容提取(类上、方法上)
- 使用SmartUplaod实现图片上传,并给上传图片添加水印后将请求参数以对象的方式返回
- 将数组的奇数位的元素存入数组并返回
- springboot学习-JPA
- MUI列表中用到pullRefresh插件的上拉刷新,会存在第一次过滤数据或者查询数据如果没有结果时,没有提示“没有更多数据了”
- OFFICER: A general optimization framework for OpenFlow rule allocation and endpoint policy enforceme
- Android数据库(SQLite)框架(4)——使用LitePal存储数据
- 3js判断语句
- React Native 中的JSX学习