栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA自定义注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA自定义注解

文章目录
  • 自定义注解
  • 一、aop切面代码如下


自定义注解

该注解用于前置通知

import java.lang.annotation.documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@documented
public @interface FunBtnPermissions {
	String value()default"";
}

该注解用于环绕通知

import java.lang.annotation.documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@documented
public @interface FunPermissions {
	String value()default"";
}

一、aop切面代码如下
import java.lang.reflect.Method;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.com.core.annotation.FunPermissions;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class FunPermissionsAspect {
	
	@Pointcut("@annotation(com.core.annotation.FunPermissions)")
	public void funPermissionscut() {
	}
	@Pointcut("@annotation(com.core.annotation.FunBtnPermissions)")
	public void funBtnPermissionscut() {
	}
	
	@Around("funPermissionscut()")
	public Object around(ProceedingJoinPoint point) {
		Signature signature = point.getSignature();
        MethodSignature methodSignature = (MethodSignature) signature;
        Method method = methodSignature.getMethod();
        if (method != null){
        	FunPermissions annotation = method.getAnnotation(FunPermissions.class);
        	//获取注解中向value赋的值
        	String value = annotation.value();
        	//获取方法上的参数名称数组
            String[] parameters =  methodSignature.getParameterNames();
            //获取方法上的参数值数组
            Object[] parameterVals = point.getArgs();
            if(判断是否让加@FunPermissions注解的方法继续执行){
            	try {
            		//这个return的时候加@FunPermissions注解的方法继续执行
    				return point.proceed();
    			} catch (Throwable e) {
    				e.printStackTrace();
    			}
            }
        }
        //这个return的时候加@FunPermissions注解的方法停止执行
        return null;
	}
	@Before("funBtnPermissionscut()")
	public void before(JoinPoint point) {
		Signature signature = point.getSignature();
		MethodSignature methodSignature = (MethodSignature) signature;
		Method method = methodSignature.getMethod();
		if (method != null){
		//写业务
	}	
}

结束

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号