- 本文章介绍了一个通过注解形式实现AOP拦截完成文章阅读量增加的功能。首先在项目的pom文件中引入AOP所需的依赖代码:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.5</version>
</dependency>
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ArticleReadCount {}
- 开始写AOP拦截器代码,首先写一个拦截点,是通注解ArticleReadCount进行拦截的,然后我使用的是方法前拦截(Around、after等均可),获取到文章id后将阅读数增加。
@Aspect
@Component
public class ArticleAspect {
@Autowired
private ArticleService articleService;
@Pointcut("@annotation(ArticleReadCount)")
private void articleRead(){};
@Before("articleRead()")
public void ArticleReadCount(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
Long articleId = (Long)args[0];
articleService.addArticleReadCount(articleId);
}
}
- 最后将注解加入到访问文章的方法上即可实现查看文章阅读量自动增加。