spring aspectj 注解实例 生成唯一ID
时间: 2023-11-11 17:51:20 浏览: 52
Spring AspectJ 注解可以通过 @Aspect 注解和 @Around 注解来实现生成唯一ID的功能。其中,@Aspect 注解用于定义切面,@Around 注解用于定义通知,通知则是实现具体业务逻辑的类方法。
以下是一个示例代码:
首先,在 Spring 配置文件中,需要引入 AspectJ 的命名空间:xmlns:aop="http://www.springframework.org/schema/aop"
然后,定义一个切面类,使用 @Aspect 注解标注:
```
@Aspect
public class UniqueIdAspect {
private static AtomicLong sequence = new AtomicLong(1);
@Around("@annotation(com.example.UniqueId)")
public Object generateUniqueId(ProceedingJoinPoint joinPoint) throws Throwable {
long id = sequence.getAndIncrement();
Object[] args = joinPoint.getArgs();
// 生成唯一ID
// 将ID设置到参数中或者返回给调用者
return joinPoint.proceed(args);
}
}
```
在上述代码中,切面类名为 UniqueIdAspect,使用了 @Aspect 注解。在方法中,使用了 @Around 注解,并指定了切入点表达式 @annotation(com.example.UniqueId)。这个表达式表示,只有当被调用的方法带有 @com.example.UniqueId 注解时,该通知才会被触发。
接下来,在需要生成唯一ID的方法上,使用 @com.example.UniqueId 注解标注即可:
```
@com.example.UniqueId
public void foo() {
// 业务逻辑
}
```
这样,每次调用 foo 方法时,切面类 UniqueIdAspect 中的通知方法 generateUniqueId 就会被触发,并生成一个唯一的ID。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)