springboot aspect通過(guò)@annotation進(jìn)行攔截的實(shí)例代碼詳解
annotation就是注解的意思,在我們使用的攔截器時(shí),可以通過(guò)業(yè)務(wù)層添加的某個(gè)注解,對(duì)業(yè)務(wù)方法進(jìn)行攔截,之前我們?cè)谶M(jìn)行統(tǒng)一方法攔截時(shí)使用的是execution,而注解的攔截我們使用@annotation即可,我們可以做個(gè)例子,比如搞個(gè)防止重復(fù)提交的注解,然后在攔截器里去寫(xiě)防止重復(fù)提交的邏輯就好了。
攔截器數(shù)據(jù)源
/**
* 防止重復(fù)提交
*
* @author BD-PC220
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface RepeatSubmit {
/**
* 間隔多長(zhǎng)時(shí)間提交,默認(rèn)1秒
*
* @return
*/
long time() default 1;
/**
* 作為驗(yàn)證重復(fù)提交的key,
*
* @return
*/
String key();
}
業(yè)務(wù)實(shí)現(xiàn)的攔截器代碼
/**
* URL重復(fù)提交攔截器.
*/
@Slf4j
@Component
@Aspect
public class RepeatSubmitAspect {
@Autowired
StringRedisTemplate redisTemplate;
@Around("@annotation(repeatSubmit)")
public Object around(ProceedingJoinPoint proceedingJoinPoint, RepeatSubmit repeatSubmit) throws Throwable {
log.info("repeatSubmit={}", repeatSubmit.toString());
}
}
在單元測(cè)試?yán)锶ソI(yè)務(wù)方法,然后建立單元測(cè)試的方法等
@Component
public class RepeatSubmitController {
@RepeatSubmit(key = "get")
public String get() {
return "success";
}
}
測(cè)試代碼
@RunWith(SpringRunner.class)
@SpringBootTest()
@Slf4j
public class RepeatSubmitTest {
@Autowired
RepeatSubmitController repeatSubmitController;
@Test
public void test() {
log.info(repeatSubmitController.get());
}
}

到此這篇關(guān)于springboot aspect通過(guò)@annotation進(jìn)行攔截的文章就介紹到這了,更多相關(guān)springboot aspect通過(guò)@annotation攔截內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring中@ControllerAdvice 注解的使用
@ControllerAdvice注解是Spring3.2中新增的注解,主要用于Controller的全局配置,本文就來(lái)介紹一下spring中@ControllerAdvice 注解的使用,感興趣的可以了解一下2024-09-09
Springboot RocketMq實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了Springboot RocketMq實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Java經(jīng)緯度小數(shù)與度分秒相互轉(zhuǎn)換工具類示例詳解
這篇文章主要介紹了Java經(jīng)緯度小數(shù)與度分秒相互轉(zhuǎn)換工具類,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
總結(jié)Java中線程的狀態(tài)及多線程的實(shí)現(xiàn)方式
Java中可以通過(guò)Thread類和Runnable接口來(lái)創(chuàng)建多個(gè)線程,線程擁有五種狀態(tài),下面我們就來(lái)簡(jiǎn)單總結(jié)Java中線程的狀態(tài)及多線程的實(shí)現(xiàn)方式:2016-07-07
mybatis映射文件操作存儲(chǔ)過(guò)程的實(shí)現(xiàn)
本文主要介紹了mybatis映射文件操作存儲(chǔ)過(guò)程的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Failed to execute goal org...的解決辦法
這篇文章主要介紹了Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解決辦法的相關(guān)資料,需要的朋友可以參考下2017-06-06

