目录
1.Spring框架一般基于 AspectJ 实现AOP操作
对com.lbj.spring包中的所有类,类里面所有方法进行增强
Spring的AOP-准备工作
1.Spring框架一般基于 AspectJ 实现AOP操作
AspectJ:不是Spring 组成部分,独立于Spring 的AOP 框架,是一个独立的AspectJ框架
一般把AspectJ框架 和 Spring 框架一起使用,进行AOP操作(因为会更加方便)
2.基于AspectJ 实现 AOP 操作
(1)基于xml 配置文件实现
(2)基于注解方式实现【常用】
如何去实现:
3.在项目工程用引入AOP 相关依赖
步骤一:找到依赖包
步骤二:导入依赖包
或者:
使用maven仓库引入3个JAR包
使用阿里云仓库会快一点
https://maven.aliyun.com/mvn/search
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>mystudy01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.cglib</groupId>
<artifactId>com.springsource.net.sf.cglib</artifactId>
<version>2.2.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.aopalliance</groupId>
<artifactId>com.springsource.org.aopalliance</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>com.springsource.org.aspectj.weaver</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>
</dependencies>
</project>
4.切入点表达式
(1)切入点表达式作用:知道对哪个类里面的哪个方法进行增强
(2)语法结构:
execution([权限修饰符][返回类型][类的全路径][方法名称]([参数列表]))
举例1:
对com.lbj.spring.dao类中的add()方法进行增强
* 星号表示所有权限修饰符例如public private
返回类型 可以省略不写
(..) 表示参数
execution(* com.lbj.spring.dao.add(..))
举例2:
对com.lbj.spring.dao类中的所有方法进行增强
execution(* com.lbj.spring.dao.*(..))
举例3:
对com.lbj.spring包中的所有类,类里面所有方法进行增强
execution(* com.lbj.spring.*.*(..))
下一章节:
配置5种通知类型:
前置通知
后置通知
环绕通知
异常通知
最终通知