@Pointcut("execution (* com.xxx.service..*.*(..))")public void cut(){}/*** 声明前置通知 并将通知应用到定义的切入点上* 目标类方法执行前 执行该通知*/@Before(value="cut()")public void before(){System.out.println("前置通知.....");}/*** 声明返回通知 并将通知应用到切入点上* 目标类方法执行完毕执行该通知*/@AfterReturning(value="cut()")public void afterReturning(){System.out.println("返回通知....");}/*** 声明最终通知 并将通知应用到切入点上* 目标类方法执行过程中是否发生异常 均会执行该通知 相当于异常中的 finally */@After(value="cut()")public void after(){System.out.println("最终通知....");}/*** 声明异常通知 并将通知应用到切入点上* 目标类方法执行时发生异常 执行该通知*/@AfterThrowing(value="cut()",throwing="e")public void afterThrowing(Exception e){System.out.println("异常通知....方法执行异常时执行:"+e);}/*** 声明环绕通知 并将通知应用到切入点上* 方法执行前后 通过环绕通知定义相应处理*/@Around(value="cut()")public Object around(ProceedingJoinPoint pjp) throws Throwable{System.out.println("环绕前置...");System.out.println("环绕通知");System.out.println(pjp.getTarget()+"--"+pjp.getSignature());Object result=pjp.proceed();//执行目标对象方法System.out.println("环绕后置...");return result;}

}

**Aop 匹配方法规则表达式语言(简要了解)**Aop 切入点表达式简介执行任意公共方法:

execution(public *(…))

执行任意的 set 方法

execution(* set*(…))

执行 com.xxx.service 包下任意类的任意方法

execution(* com.xxx.service..(…))

执行 com.xxx.service 包 以及子包下任意类的任意方法

execution(* com.xxx.service….(…))

**xml 方式****配置切面、切入点、通知**

aop:config

<!-- aop 切面配置 --><aop:aspect ref="logCut"><!-- 定义 aop 切入点 --><aop:pointcut expression="execution (* com.xxx.service..*.*(..))" id="cut"/><!-- 配置前置通知 指定前置通知方法名 并引用切入点定义 --><aop:before method="before" pointcut-ref="cut"/><!-- 配置返回通知 指定返回通知方法名 并引用切入点定义 --><aop:after-returning method="afterReturning" pointcut-ref="cut"/><!-- 配置异常通知 指定异常通知方法名 并引用切入点定义 --><aop:after-throwing method="afterThrowing" throwing="e" pointcut-ref="cut"/><!-- 配置最终通知 指定最终通知方法名 并引用切入点定义 --><aop:after method="after" pointcut-ref="cut"/><!-- 配置环绕通知 指定环绕通知方法名 并引用切入点定义 --><aop:around method="around" pointcut-ref="cut"/></aop:aspect>

</aop:config>

定义 bean

/**

  • 声明切面组件

*/

@Component

public class LogCut {

public void before(){System.out.println("前置通知.....");}public void afterReturning(){System.out.println("返回通知....");} public void after(){System.out.println("最终通知....");}public void afterThrowing(Exception e){System.out.println("异常通知....方法执行异常时执行:" + e);}public Object around(ProceedingJoinPoint pjp) throws Throwable{System.out.println("环绕前置...");System.out.println("环绕通知");System.out.println(pjp.getTarget()+"--"+pjp.getSignature());Object result=pjp.proceed();System.out.println("环绕后置...");return result;}

}

[](https://gitee.com/vip204888/java-p7)扩展---------------------------------------------------------------------**AOP 的基本概念**# 最后看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下**互联网工程师必备的面试1000题**。> 注意:不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友,**[直接戳这里即可免费下载](https://gitee.com/vip204888/java-p7)**![最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?](https://img-blog.csdnimg.cn/img_convert/028a25d9c2fae320be9df963225f2931.png)互联网工程师必备的面试1000题而且从上面三家来看,**算法与数据结构是必备不可少的**呀,因此我建议大家可以去**刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》**,里面近**200道真实出现过的经典代码面试题**。意:不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友,**[直接戳这里即可免费下载](https://gitee.com/vip204888/java-p7)**[外链图片转存中...(img-cJ0G342G-1628434645629)]互联网工程师必备的面试1000题而且从上面三家来看,**算法与数据结构是必备不可少的**呀,因此我建议大家可以去**刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》**,里面近**200道真实出现过的经典代码面试题**。![最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?](https://img-blog.csdnimg.cn/img_convert/19eb59ea19795c929e8bb04c4a07e2f3.png)

你知道面试必问的AOP吗(2),我在华为做Java外包的真实经历相关推荐

  1. 字节跳动面试:我在华为做Java外包的真实经历附详细答案解析

    前言 锁是一种用来控制多线程访问共享资源的工具.通常,锁可以独占共享资源:同一时间只有一个线程可以获得锁,并且所有访问共享资源的线程都必须首先获得锁.前面我们介绍过了synchronized,使用sy ...

  2. 我在华为做Android外包的真实经历!吊打面试官系列!

    导语 本部分内容是关于Android进阶的一些知识总结,涉及到的知识点比较杂,不过都是面试中几乎常问的知识点,也是加分的点. 关于这部分内容,可能需要有一些具体的项目实践.在面试的过程中,结合具体自身 ...

  3. ndk开发环境!我在华为做Android外包的真实经历!顺利通过阿里Android岗面试

    "我,程序员,32岁,距离退休,只剩3年了!" 这句话用来形容2020年互联网行业最适合不过了.从18年开始,大大小小的互联网公司开始了不止一轮的裁员,19年网上开始充斥一类文章, ...

  4. 你知道面试必问的AOP吗,跟Java初学者分享几点经验

    */@After(value="cut()")public void after(){System.out.println("最终通知....");}/*** ...

  5. 你知道面试必问的AOP吗(1),2021吊打面试官系列

    public void before(){System.out.println("前置通知.....");}/*** 声明返回通知 并将通知应用到切入点上* 目标类方法执行完毕执行 ...

  6. java中的静态、动态代理模式以及Spring中的CgLib动态代理解读(面试必问)

    java中的静态.动态代理模式以及Spring中的CgLib动态代理解读(面试必问) 静态代理 动态代理 CgLib动态代理     基础知: 反射知识 代理(Proxy)是一种设计模式,提供了对目标 ...

  7. Android面试必问框架原理

    Android面试必问框架原理 volatile的实现原理 synchronized的实现原理 join方法实现原理 CAS无锁编程的原理 ReentrantLock的实现原理 AQS的大致实现思路 ...

  8. 看完946页“JAVA高级架构面试必问”,金九银十社招全拿下

    前言 我本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找坑的时 ...

  9. 互联网公司面试必问的Redis题目

    https://juejin.im/post/5b99d4bce51d450e7a24b66e#heading-0 Redis是一个非常火的非关系型数据库,火到什么程度呢?只要是一个互联网公司都会使用 ...

最新文章

  1. 解决启动hadoop时datanode无法启动
  2. 使用 Spring Batch 构建企业级批处理应用
  3. 运行程序时java后面跟的是文件名对吗_运行程序时java命令后面跟的是文件名。...
  4. java ee maven_针对新手的Java EE7和Maven项目–第8部分
  5. linux添加源地址ping,实战经验:Linux Source NAT在Ping场景下的应用
  6. 计算机科学专业必读的44册经典著作
  7. jvm堆内存设置原理
  8. 樊登讲亲密关系_《亲密关系》
  9. Word插入脚注后分节符自动变成分页符解决办法
  10. matlab 买什么电脑配置,要快速运行Matlab,电脑用什么配置和系统好
  11. 从零开始编写minecraft光影包(3)基础泛光绘制
  12. 【Unscented Kalman Filter】C#无迹卡尔曼滤波Demo--两个示例附代码
  13. 学校食堂工作流程图流程图模板分享
  14. 贵金属交易最佳时间,2023伦敦金交易平台最新排行榜
  15. 占据栅格地图构建(Occupancy Grid Map)
  16. python 使用七牛云cdn
  17. 五个无刷马达驱动电路分享!
  18. 【Java8新特性 串行/并行流-Optional容器类-时间格式化线程安全等】
  19. 磁盘管理命令df和du的区别,以及du -sh ./与du -sh ./*区别
  20. 文本文件后缀修改为 .html

热门文章

  1. pytorch randomresizedcrop
  2. 无需人脸检测,实时6自由度3维人脸姿态估计img2pose
  3. pycharm不进入test模式
  4. python Sigmoid和Tanh 可视化
  5. 华为和思科设备路由协议默认优先级总结
  6. c bool 类型检查_C语言和C+的区别是什么?8个点通俗易懂的告诉你!
  7. mysql indentify by_测试工作中常用到的sql命令!!!
  8. 文件怎么上传远程服务器,怎么上传文件到远程服务器
  9. 模拟电路基础秦世才_模拟电子技术基础碎片化-晶体管及放大电路基础
  10. python考试题库 pcap_使用Python修改PCAP