基于AspectJ的XML方式进行AOP开发
-------------------siwuxie095
基于 AspectJ 的 XML 方式进行 AOP 开发
1、首先导入
jar 包(共 10 个包)
(1)导入核心 jar 包和日志相关的 jar 包
(2)导入 AOP 和
AspectJ 的 jar 包
其中:
aopalliance
下载链接:
http://mvnrepository.com/artifact/aopalliance/aopalliance
aspectjweaver
下载链接:
http://mvnrepository.com/artifact/org.aspectj/aspectjweaver
2、创建
Spring 核心配置文件,引入新的 XML 约束
spring-aop-4.3.xsd
注意:要引入和
Spring 版本对应的 XML 约束
在
applicationContext.xml 中添加如下约束:
<?xml <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
3、使用表达式配置切入点:切入点表达式
(1)切入点,即
实际被增强的方法
(2)常用表达式:
execution(<访问修饰符>? <返回值类型> <类型声明>? <方法名>(<参数>) <异常>?)
1)必选:返回值类型、方法名、参数
2)可选:访问修饰符、类型声明、异常
(3)通配符:
1)*:匹配任意数量的字符
2)..:匹配任意数量的包
或
参数
(4)举例如下:
1)execution(* com.siwuxie095.aop.Book.add(..))
匹配特定包和类下的 add 方法
2)execution(* com.siwuxie095.aop.Book.*(..))
匹配特定包和类下的所有方法
3)execution(* *.*(..))
匹配所有方法
4)execution(* add*(..))
匹配所有 add 开头的方法
参考链接:http://www.cnblogs.com/softidea/p/6102770.html
4、具体实现
(1)编写一个被增强类
Book.java:
package com.siwuxie095.aop; //被增强类 public class Book { public System.out.println("----- add -----"); }
} |
(2)编写一个增强类
MyBook.java:
package com.siwuxie095.aop; import org.aspectj.lang.ProceedingJoinPoint; // 增强类 public class MyBook { public System.out.println("----- 前置增强 -----"); }
public System.out.println("----- 后置增强 -----"); }
public System.out.println("----- 环绕增强(方法之前) -----"); //执行被增强的方法 proceedingJoinPoint.proceed(); System.out.println("----- 环绕增强(方法之前) -----"); }
} |
(3)在配置文件中进行配置
applicationContext.xml:
<?xml <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 配置对象 --> <bean <bean <!-- 配置 AOP --> <aop:config>
<!-- 配置切入点:哪些类的哪些方法需要增强 --> <aop:pointcut
<!-- 配置切面:把增强应用到切入点上 --> <aop:aspect <aop:before <aop:after-returning <aop:around </aop:aspect>
</aop:config> </beans> |
(4)编写一个测试类
TestAop.java:
package com.siwuxie095.aop; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestAop {
/** * 手动加上 @Test 以进行单元测试(将自动导入 JUnit 4 的 jar 包) * * 选中方法名,右键->Run As->JUint Test */ @Test public
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Book book=(Book) context.getBean("book");
book.add(); }
} |
(5)运行一览:
【made by siwuxie095】
基于AspectJ的XML方式进行AOP开发的更多相关文章
- 基于AspectJ的注解方式进行AOP开发
-------------------siwuxie095 基于 AspectJ 的注解方式进行 AOP 开发 ...
- 【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)
[AOP]操作相关术语 Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点. Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add ...
- Spring的AOP开发入门,Spring整合Junit单元测试(基于ASpectJ的XML方式)
参考自 https://www.cnblogs.com/ltfxy/p/9882430.html 创建web项目,引入jar包 除了基本的6个Spring开发的jar包外,还要引入aop开发相关的四个 ...
- Spring的AOP开发(基于AspectJ的XML方式)
Spring的AOP的简介: AOP思想最早是由AOP联盟组织提出的.Spring是使用这种思想最好的框架 Spring的AOP有自己实现的方式(非常繁琐). Aspect是一个AOP的框架, Spr ...
- spring框架之AspectJ的XML方式完成AOP的开发
1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * sp ...
- AspectJ的XML方式完成AOP的开发之切入点的表达式
1. 再配置切入点的时候,需要定义表达式,重点的格式如下:execution(public * *(..)),具体展开如下: * 切入点表达式的格式如下: * execution([修饰符] 返回值类 ...
- Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)
1. 步骤一:恢复转账开发环境(转账开发环境见“https://www.cnblogs.com/wyhluckdog/p/10137283.html”) 2.步骤二:引入AOP的开发包3.步骤三:引入 ...
- AspectJ的XML方式完成AOP的开发之AOP的通知类型
1. 前置通知 * 在目标类的方法执行之前执行. * 配置文件信息:<aop:after method="before" pointcut-ref="myPoint ...
- Spring事务管理之声明式事务管理-基于AspectJ的XML方式
© 版权声明:本文为博主原创文章,转载请注明出处 案例 - 利用Spring的声明式事务(AspectJ)管理模拟转账过程 数据库准备 -- 创建表 CREATE TABLE `account`( ` ...
随机推荐
- [UE4]Axis Mappings轴映射和动作映射Action Mappings的区别
这里添加的映射只能在“玩家角色(Character)”的事件蓝图中使用. 从它们设置和蓝图使用界面就能看出他们的区别
- Asynchronous programming with Tornado
Asynchronous programming can be tricky for beginners, therefore I think it’s useful to iron some bas ...
- OPatch failed with error code 73(OracleHomeInventory gets null oracleHomeInfo)
OPatch failed with error code 73(OracleHomeInventory gets null oracleHomeInfo) 1.问题描述 [oracle@dou_ra ...
- 给iOS开发新手送点福利,简述UIPikerView的属性和用法
1. numberOfComponents:返回UIPickerView当前的列数 NSInteger num = _pickerView.numberOfComponents; NSLog( @ ...
- Django中组合搜索功能
需求分析 很多电商网站中有组合搜索的功能,所谓组合搜索就是网页中组合多个条件,对数据库中进行查询,并且将结果显示在页面中,看个例子吧: 注意红框中的标识,我们可以根据URL来做组合搜索. video- ...
- JoinableQueue---创建可连接的共享进程队列
创建可连接的共享进程队列.这就像是一个Queue对象,但队列允许项目的使用者通知生产者项目已经被成功处理. 通知进程是使用共享的信号和条件变量来实现的. from multiprocessing im ...
- placeholder测试
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- sqoop1的安装以及数据导入导出测试
下载 wget http://mirror.bit.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 解压 tar -zxf ...
- 5.mybatis实战教程(mybatis in action)之五:与spring3集成(附源码)
转自:https://blog.csdn.net/nnn9223643/article/details/41962097 在 这一系列文章中,前面讲到纯粹用mybatis 连接数据库, 然后 进行增删 ...
- Window python下载安装
Window python下载安装 http://www.runoob.com/python/python-install.html https://pan.baidu.com/s/1MoR9nWUY ...