注解内容提取(类上、方法上)

来源:互联网 发布: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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 安卓6.0吃运行内存怎么办 小米手机王者荣耀录像不支持怎么办 win764位系统不兼容怎么办 安卓版本太高不兼容怎么办 安卓3.2.0不兼容怎么办 手机卡和手机不兼容怎么办 vivo手机下载吃鸡不兼容怎么办 vivox3t不兼容支付宝怎么办 移动sim卡坏了怎么办 cpu和主板不兼容怎么办 主板与cpu不兼容怎么办 cpu跟主板不兼容怎么办 软件与电脑不兼容怎么办 win8系统无限重启怎么办 安装微信旧版本登录提示升级怎么办 手机软件与系统不兼容怎么办 下载旧版本微信闪退登陆不了怎么办 企业微信一直登录失败怎么办 360浏览器9.1经常卡死怎么办 手机版爱奇艺看电影屏幕变小怎么办 找不到旧版本米聊怎么办 苹果id被锁了怎么办 新浪微博支付宝解绑失败怎么办 阿里妈妈升级看不到引流人数怎么办 阿里妈妈账号被冻结怎么办 微博昵称到次数怎么办 五星好评之后忘记截图了怎么办 评价后忘了截图怎么办 好评率太低不能买东西了怎么办 淘宝评价被删了怎么办 淘宝店铺有流量没有成交怎么办 淘宝好评被删了怎么办 淘宝评论被系统删除怎么办 淘宝被商家删除评价怎么办 淘宝评价管理商家删除了怎么办 淘宝商家删除评价我该怎么办 我的评价隐藏了怎么办 淘宝把评论删了怎么办 淘宝虚假交易被删除评价怎么办 淘宝好评评错了怎么办 被淘宝骗了好评怎么办