使用注解作为AOP的切入点(@Pointcut)
错误日志
在使用aop的注解切入时…
引入jar包
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>
创建切面类
import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;//标注是一个aop @Aspect @Component public class MyAop {//切入点设置设置注解@Pointcut("@annotation(com.xhlin.annotation.PageX)")public void point(){}// 环绕通知@Around("point()")public Object around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("环绕前");ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();String pageNum = request.getParameter("pageNum");String pageSize = request.getParameter("pageSize");if (pageSize !=null && pageNum!= null){int page_num = Integer.valueOf(pageNum);int page_size = Integer.valueOf(pageSize);PageHelper.startPage(page_num,page_size);}Object proceed = pjp.proceed();if (proceed instanceof Page){proceed = (Page) proceed;}System.out.println("环绕后");return proceed;}}
创建注解类
import java.lang.annotation.*;@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface PageX {}
在要被调用的方法上面添加注解
import java.util.List;public interface UserExcelService {@PageXList<UserExcel> selects(); }
开启程序…
运行结果…
咦?为什么aop没有生效?
检查代码发现,如果你使用的是 controller->service->mapper 在接口中定义的方法添加注解,我们的aop在容器中找注解时会找不到,因为service接口没有注入到spring ioc中
修改代码:把注解移到mapper接口中的方法。(因为@mapper注释了mapper接口,这个@mapper注解会被用于spring和mybatis链接的@MapperScan扫描)
使用注解作为AOP的切入点(@Pointcut)相关推荐
- Spring AOP中切入点@Pointcut的使用
切入点@Pointcut的使用 在确定切面aspect之后,需要在切面上确定切入点pointcut 定义 注解@pointcut("{切入点}") 其中{切入点}格式如下: exe ...
- Spring AOP切入点@Pointcut -- execution表达式
Spring AOP 切入点@Pointcut – execution表达式 表达式示例 execution(* com.sample.service.impl..*.*(..)) 详述: execu ...
- 基于注解的 AOP 配置
基于注解的 AOP 配置 bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xml ...
- 十、springboot注解式AOP(@Aspect)统一日志管理
springboot注解式AOP(@Aspect)统一日志管理 简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功 ...
- Spring核心部分之AOP,aspectJ框架实现AOP,切入点表达式
1. 面向切面编程(Aspect Oriented Programming,AOP) AOP:以切面为核心,确定切面的执行时间以及执行位置,底层实现是动态代理. AOP的作用:①在不改动源代码的情况下 ...
- SpringAOP描述及实现_AspectJ详解_基于注解的AOP实现_SpringJdbcTemplate详解
AOP AOP特点: 面向切面编程, 利用AOP对业务逻辑的各个部分进行抽取公共代码, 降低耦合度, 提高代码重用性, 同时提高开发效率. 采取横向抽取, 取代传统纵向继承体系重复性代码 解决事务管理 ...
- 【Spring AOP】基于注解的 AOP 编程
Spring AOP 基于注解的 AOP 编程的开发 开发步骤 切入点复用 切换动态代理的创建方式(JDK.Cglib) AOP 开发中的一个坑(业务方法互相调用) AOP 知识总结 更多内容请查看笔 ...
- .Net转Java自学之路—Spring框架篇二(IOC注解、AOP)
Spring的Bean操作(注解方式): 注解:代码中特殊的标记,使用注解可以完成相关功能. @注解名称(属性名称=属性值) 注解可以使用在类.方法.属性上面. 主要用途:可以替代配置文件来创建对象和 ...
- java aop注解日志记录_springMVC自定义注解,用AOP来实现日志记录的方法
需求背景 最近的一个项目,在项目基本完工的阶段,客户提出要将所有业务操作的日志记录到数据库中,并且要提取一些业务的关键信息(比如交易单号)体现在日志中. 为了保证工期,在查阅了资料以后,决定用AOP+ ...
最新文章
- 美国AI博士指出,自学Python到底能做什么
- 距离和相似性度量方法
- java怎么修改会员信息_JavaWeb用户信息管理系统-修改用户操作的实现
- torch_geometric 笔记:TORCH_GEOMETRIC.UTILS(更新中)
- MyBatis-23MyBatis缓存配置【二级缓存】
- MD5计算,一个扩展类,哪里都能用
- 字节内部自动化测试培训资料,明年涨薪用得上
- 软工视频(33~36)-用户界面设计
- Intent与intent-filter
- scara机器人动荷载_揭密SCARA机器人
- 物质环境、符号还是认知模型?——谈韩礼德、马丁、范迪克的语境观
- 计算机音频接口,一台计算机的两个音频输出
- mppdb 查看建表语句_内存MPP数据库介绍.pptx
- 用计算机制作程序框图,如何制作工艺流程图 电脑绘制工艺流程图方法
- 支付宝五福java_2021年集支付宝五福攻略 一个账号一天最少扫到10张+ 扫一轮下来 基本要啥福有啥福!...
- 菜鸟柳--23种设计模式初学记录笔记(二)装饰者设计模式
- ip地址转换数字函数 iton_3. IP地址转换函数
- 如何做一个好的lead
- (imdb数据集)电影评论分类实战:二分类问题
- itext对pdf文件进行多钱张及多页图片签章