使用aspectJ实现Spring AOP的两种方式
方式一:基于aspectJ的XML配置
方式二:基于aspectJ的注解方式
基于aspectJ的XML配置
1) 引入相关jar包
2) 创建Spring核心配置文件,必须导入aop的约束
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/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">
</beans>
3) 使用表达式配置切入点
[1] 切入点:实际增强的方法
[2] execution(<访问修饰符>?<返回值类型><方法名全路径>(<从参数>)<异常>)
表达式的几种写法:
①execution (* cn.aop.Book.add(..))对cn.aop包下的Book类中的所有方法名为add的方法进行增强
*:表示可以是任意访问修饰符
cn.aop.Book.add:方法的全路径
(..):表示可以有参数,也可以没有
②execution (* cn.aop.Book.*(..))对cn.aop包下的Book类中的所有方法进行增强
③execution(* *.*(..))对所有包下的所有类中的所有方法进行增强
④execution(* save*(..))对所有以save开头的方法进行增强
前置增强实例:
<?xml version="1.0" encoding="UTF-8"?> |
4) 编写测试类
public class Test {
|
测试结果如下:
后置增强实例和前置一样
环绕增强:
需要增强的类
public class Book {
|
增强类中的方法::
public void around(ProceedingJoinPoint proceedingJoinPoint){
|
XML配置文件
<?xml version="1.0" encoding="UTF-8"?> |
测试类
public class Test {
|
执行效果
方式二: 基于aspectJ的注解方式
1) 引入相关jar包
2) 创建Spring核心配置文件,必须导入aop的约束
以上两步骤直接参照基于aspectJ的XML配置方式
3) 在Spring配置文件中开启aop操作
4) 在增强类上面加上@Aspectj的注解
在增强的方法上面加上@before注解 @before是前置增强
5) 创建test类,运行效果如下
使用aspectJ实现Spring AOP的两种方式的更多相关文章
- spring AOP的两种代理
本篇记录下spring AOP的两种代理,为下一篇AOP实现做下铺垫. 1.JDK动态代理 2.cglib代理 1.如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2.如果目标对象 ...
- Spring管理事物两种方式
Spring管理事物两种方式 1. 编程式事物管理(在开发中不经常使用) 使用步骤 1. 配置数据库事物管理 DataSourceTransactionManager <!--配置事物管理器-- ...
- springmvc配置AOP的两种方式
spingmvc配置AOP有两种方式,一种是利用注解的方式配置,另一种是XML配置实现. 应用注解的方式配置: 先在maven中引入AOP用到的依赖 <dependency> <gr ...
- 使用web.xml方式加载Spring时,获取Spring context的两种方式
使用web.xml方式加载Spring时,获取Spring context的两种方式: 1.servlet方式加载时: [web.xml] <servlet> <servlet-na ...
- (一)spring aop的两种配置方式。
sring aop的方式有两种:(1)xml文件配置方式(2)注解的方式实现,我们可以先通过一个demo认识spring aop的实现,然后再对其进行详细的解释. 一.基于注解的springAop配置 ...
- 在Spring整合aspectj实现aop的两种方式
-----------------------------基于XML配置方案目标对象接口1 public interface IUserService { public void add(); pub ...
- 关于aop的两种方式-基于注解和基于aspectj
spring的aop确实好用,能够在不影响业务功能的情况下,实现一些低耦合的功能. 而aop又有两种常用的实现方式,一种是用aspectj表达式去匹配,实现全局的配置,表达式还可以使用与或非符号去连接 ...
- spring AOP的两种配置方式
连接点(JoinPoint) ,就是spring允许你是通知(Advice)的地方,那可就真多了,基本每个方法的前.后(两者都有也行),或抛出异常是时都可以是连接点,spring只支持方法连接点.其他 ...
- spring aop的两种写法aspect和advisor
本文转自:https://www.cnblogs.com/leiOOlei/p/3709607.html 首先看个例子,如下 接口代码: package com.lei.demo.aop.schema ...
随机推荐
- 诶西,JavaScript学习记录。。。。。。
由于大学课程缘故,老师巨爱叫人问问题,还记分呢,随便记录一下Js的学习情况,以后复习什么的也比较方便吧...... 开始咯,就按照C语言学习那样的方法来吧! ===================== ...
- 使用jvisualVm监控本地和远程的jvm
jvisualVm是jdk自带的可视化监控工具,功能很强大,可安装各种扩展插件.本篇不打算讲解如果使用详细的功能,只讲在windows环境怎么监控本地和远端(一般是无界面的linux系统)的java进 ...
- noiac64 sort (二分答案)
首先如果L=1,那就可以直接用一个优先队列来做 但它并不是1 所以要换个做法 假设我们已经知道第L的数是x,第R的数是y 那其实就只需要找到[x+1,y+1]这一段,然后再加上一定数量的x和y就是答案 ...
- Testlink解决大用例导入问题
最近公司同事需要将别的testlink的用例迁移过来,由于现在新的服务器也在使用,不能使用数据库导入的办法,只能用xml文件进行导入,不过在导入的时候出现了个没遇到的问题,报错文件太大,无法上传. 解 ...
- Rocket.Chat 开源IM系统部署
Rocket.Chat 官方给出的文档也个人觉得太麻烦了,并且对ubuntu的支持程度远高于CentOS,自己就折腾写了个安装的笔记,如果是在公司内部或者是部门内部还是很有用处的,比较看中的功能有和g ...
- Hello Object Oriented!
继计组之后,北航计算机学院又一大神课! 希望能以此为契机,和更多热爱技术的朋友们交流.让我们一起,共同进步~ [2019.4.27更新] 建立博客园的最初目的,是为了北航计算机学院OO课程设计的需要. ...
- 微服务下 Spring Boot Maven 工程依赖关系管理
单体 Spring Boot Maven 工程 最基本的 pom.xml 包含工程信息.Spring Boot 父工程.属性配置.依赖包.构建插件 <?xml version="1.0 ...
- 【洛谷P3901】数列找不同
题目大意:给定一个长度为 N 的序列,每个点被染了一个颜色.现有 M 个询问,每个询问查询区间 [l,r] 内的点是否颜色都是不同的. 题解:莫队裸题. 直接维护区间颜色数,用 cnt[] 记录下区间 ...
- vue2.0项目实战(4)生命周期和钩子函数详解
最近的项目都使用vue2.0来开发,不得不说,vue真的非常好用,大大减少了项目的开发周期.在踩坑的过程中,因为对vue的生命周期不是特别了解,所以有时候会在几个钩子函数里做一些事情,什么时候做,在哪 ...
- MVC相关问题归纳
问题: 1.How MVC pattern flows 2.对象模型.关系模型 3.OR Framework 4.EF(Entity FrameWork)实体框架 5.模型驱动数据数据驱动模型的两种方 ...