首先要導(dǎo)入依賴
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency>
編寫注解
package com.yg.domain.note;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @NAME: TODO:MyErrorAop
* @DATE: 2024/1/12
* /???\- NoBug
* @AUTHOR: Mr.zhou
*/
@Target(ElementType.METHOD)//可以用作于方法中
@Retention(RetentionPolicy.RUNTIME)//運(yùn)行時使用
public @interface MyErrorAop {
}
編寫Aop文章來源地址http://www.zghlxwxcb.cn/news/detail-786398.html
package com.yg.common;
import com.yg.domain.SysYuangong;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.junit.platform.commons.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
/**
* @NAME: TODO:MyErrorAop
* @DATE: 2024/1/12
* /???\- NoBug
* @AUTHOR: Mr.zhou
*/
@Aspect
@Component
public class MyErrorAop {
@Autowired
RedisTemplate redisTemplate;
// 掃描目標(biāo)類
@Pointcut("@annotation(com.yg.domain.note.MyErrorAop)")
public void myValid(){
}
//TODO:創(chuàng)建切面:防止重復(fù)提交
@Around("myValid()")
public Object MyAop(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
// 獲取實(shí)體類對象
SysYuangong arg = (SysYuangong)proceedingJoinPoint.getArgs()[0];
// 判斷校驗(yàn)字段是否為空
if (StringUtils.isBlank(arg.getToken())){
return ResultModel.error("沒有有效token");
}
// 從redis獲取字段
Boolean aBoolean = redisTemplate.hasKey(arg.getToken());
// 驗(yàn)證
if (!aBoolean){
return ResultModel.error("非法token 不能重復(fù)提交");
}
// 執(zhí)行后續(xù)方法
Object proceed = proceedingJoinPoint.proceed(proceedingJoinPoint.getArgs());
// 刪除校驗(yàn)字段
redisTemplate.delete(arg.getToken());
return proceed;
}
}
方法上添加注解
?
然后測試就發(fā)現(xiàn)添加代碼的方法都可以防止重復(fù)提交了??!
文章來源:http://www.zghlxwxcb.cn/news/detail-786398.html
到了這里,關(guān)于如何將重復(fù)方法封裝為Aop切面并結(jié)合注解使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!