一、创建注解名
package com.xxxxx;
import java.lang.annotation.*;
/**
* @author
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MpSwitch {
}
二、配置切面
2.1、配置织入点(指向注解名)
2.2、配置切点(什么时候处理、处理谁、处理那些逻辑)
2.3、
package com.xxxx.xxxx.aspectj;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.mp.api.WxMpService;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.AfterReturning;
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.mapstruct.BeforeMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
/**
* @author
*/
@Slf4j
@Aspect
@Component
public class MpSwitchAspect {
// 配置织入点
@Pointcut("@annotation(com.xxxx.xxxx.MpSwitch)")
public void msPointCut()
{
}
/**
* 处理完请求后执行
*
* @param joinPoint 切点
*/
@Before("msPointCut()")
public void doBefore(JoinPoint joinPoint) throws Throwable
{
handleDataScope(joinPoint);
}
protected void handleDataScope(final JoinPoint joinPoint)
{
try {
//需要处理的逻辑
} catch (Exception e) {
log.error("mp切换失败:"+e.getMessage());
}
}
}
三、在方法上面添加注解,如:controller、service