package com.iailab.framework.datapermission.core.aop; import com.iailab.framework.datapermission.core.annotation.DataPermission; import lombok.EqualsAndHashCode; import lombok.Getter; import org.aopalliance.aop.Advice; import org.springframework.aop.Pointcut; import org.springframework.aop.support.AbstractPointcutAdvisor; import org.springframework.aop.support.ComposablePointcut; import org.springframework.aop.support.annotation.AnnotationMatchingPointcut; /** * {@link com.iailab.framework.datapermission.core.annotation.DataPermission} 注解的 Advisor 实现类 * * @author iailab */ @Getter @EqualsAndHashCode(callSuper = true) public class DataPermissionAnnotationAdvisor extends AbstractPointcutAdvisor { private final Advice advice; private final Pointcut pointcut; public DataPermissionAnnotationAdvisor() { this.advice = new DataPermissionAnnotationInterceptor(); this.pointcut = this.buildPointcut(); } protected Pointcut buildPointcut() { Pointcut classPointcut = new AnnotationMatchingPointcut(DataPermission.class, true); Pointcut methodPointcut = new AnnotationMatchingPointcut(null, DataPermission.class, true); return new ComposablePointcut(classPointcut).union(methodPointcut); } }