博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring AOP
阅读量:6240 次
发布时间:2019-06-22

本文共 1711 字,大约阅读时间需要 5 分钟。

AOP概念:

①面向切面(方面)编程,扩展功能不修改源代码实现

②采取横向抽取机制,取代了传统纵向继承体系重复性代码

img_f2eb1a992ccc4498244376a6a2c5db0e.png
1.png
img_0f212c6b3021d2b8d2fe44f8971c4276.png
2.png

AOP操作术语:

Joinpoint(连接点):类里面可以被增强的方法

Pointcut(切入点):指要对哪些Joinpoint进行拦截的定义
Advice(通知/增强):指拦截到Joinpoint之后所要做的事情。通知分为前置通知,后置通知,异常通知,最终通知,环绕通知
Aspect(切面):是切入点和通知(引介)的结合。

img_ceddb8a45e311cd92d0e6e256e496c1f.png
3.png

spring进行AOP操作

在spring中进行aop操作,使用aspectj实现(需在官网下载aspectj所需jar包。)

aspectj不是spring的一部分,和spring一起使用进行aop操作

使用aspectj实现aop的方式

基于aspectj的xml配置

  • 导包
spring-aop-5.0.6.RELEASE.jaraspectjweaver.jarspring-aspects-5.0.6.RELEASE.jar
  • xml文件约束

使用表达式配置切入点

常用的表达式:

execution(
<访问修饰符>
?
<返回类型>
<方法名>
(
<参数>
)
<异常>
)execution(* cn.itcast.aop.Book.add(..))execution(* cn.itcast.aop.Book.*(..))execution(* *.*(..))execution(* save*(..))//匹配所有save开头的方法
  • Book.java
package cn.itcast.aop;public class Book {    public void add() {        System.out.println("add.........");    }}
  • MyBook.java
package cn.itcast.aop;import org.aspectj.lang.ProceedingJoinPoint;public class MyBook {    public void before1() {        System.out.println("前置增强.........");        }    public void after1() {        System.out.println("后置增强.........");    }    public void around1(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {        System.out.println("方法之前.........");        proceedingJoinPoint.proceed();        System.out.println("方法之后.........");    }}
  • xml文件使用
  • test测试文件
@Test    public void testUser() {        ApplicationContext context= new ClassPathXmlApplicationContext("bean2.xml");        Book book=(Book) context.getBean("book");        book.add();    }

运行下,得到

img_470d718da6d99203f7e929ede6f53f35.png
1.png

转载地址:http://gwcia.baihongyu.com/

你可能感兴趣的文章
Shell命令-文件及内容处理之sort、uniq
查看>>
Android 之文件夹排序
查看>>
Java Assert 用法简介
查看>>
关于redo size(一)
查看>>
We Know What @You #Tag: Does the Dual Role Affect Hashtag Adoption-20160520
查看>>
(转)Eclipse新增安卓虚拟机
查看>>
SpringMvc访问Controller去掉do
查看>>
PHPnow升级PHP 5.4与Mysql 5.5
查看>>
正则表达式验证邮箱格式
查看>>
如何围绕企业战略,建设BI驾驶舱?
查看>>
java多线程stop,suspend使用代码实际例子
查看>>
中小型研发团队架构实践三:微服务架构(MSA)
查看>>
Windows动态库学习心得
查看>>
在VMware虚拟机上安装Ubuntu 10.04
查看>>
LDA主题模型简介
查看>>
可拖动的DIV续
查看>>
关于“类型初始值设定项引发异常”
查看>>
MySql 小表驱动大表
查看>>
Redis 数据结构的底层实现 (一) RealObject,embstr,sds,ziplist,quicklist
查看>>
SQL语句注入的问题
查看>>