spring AOP 注解开发
AOP 操作(AspectJ 注解)
1. 创建类,在类里面定义方法
java
1 | public class User { |
2. 创建增强类(编写增强逻辑)
java
1 | //(1)在增强类里面,创建方法,让不同方法代表不同通知类型 |
3. 进行通知的配置
- 在 spring 配置文件中,开启注解扫描xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
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/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 开启注解扫描 -->
<context:component-scan basepackage="com.atguigu.spring5.aopanno"></context:component-scan> - 使用注解创建 User 和 UserProxy 对象java
1
2
3
4
5//被增强的类
public class User{}
public class UserProxy{} - 在增强类上面添加注解 @Aspectjava
1
2
3
4//增强的类
//生成代理对象
public class UserProxy { - 在 spring 配置文件中开启生成代理对象xml
1
<!-- 开启 Aspect 生成代理对象--> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
- 配置不同类型的通知
在增强类的里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置
java
1 | // 增强的类 |
相同的切入点抽取
java
1 | //相同切入点抽取 |
有多个增强类多同一个方法进行增强,设置增强类优先级
在增强类上面添加注解 @Order(数字类型值),数字类型值越小优先级越高
java
1 |
|
完全使用注解开发
创建配置类,不需要创建 xml 配置文件
java
1 |
|
AOP 操作(AspectJ 配置文件)
- 创建两个类,增强类和被增强类,创建方法
- 在 spring 配置文件中创建两个类对象xml
1
2
3<!--创建对象-->
<bean id="book" class="com.atguigu.spring5.aopxml.Book"></bean>
<bean id="bookProxy" class="com.atguigu.spring5.aopxml.BookProxy"></bean> - 在 spring 配置文件中配置切入点xml
1
2
3
4
5
6
7
8
9
10<!--配置 aop 增强-->
<aop:config>
<!--切入点-->
<aop:pointcut id="p" expression="execution(* com.atguigu.spring5.aopxml.Book.buy(..))"/>
<!--配置切面-->
<aop:aspect ref="bookProxy">
<!--增强作用在具体的方法上-->
<aop:before method="before" pointcut-ref="p"/>
</aop:aspect>
</aop:config>
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.