KKB :spring中实现AOP:切点与切面(配置文件中)

1、配置项目环境

导入aop的xml环境依赖

<?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-4.2.xsd">

添加jar包

<dependencies><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version> </dependency>
 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId>
<version>1.8.13</version></dependency>
<dependency><groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId> <version>5.0.8.RELEASE</version>
</dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.0.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId>
<version>5.0.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId>
            <version>5.0.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId>
<version>5.0.8.RELEASE</version> </dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId>
            <version>5.0.8.RELEASE</version></dependency></dependencies>

 

2、创建项目原有的调取过程

service 调取 dao 的过程   application.xml中的基本配置为

    <bean id="udao" class="com.atshiyou.dao.Impl.UserDaoImpl"></bean>
    <bean id="uservice" class="com.atshiyou.service.impl.UserServiceImpl">
        <property name="dao" ref="udao"></property>
    </bean>

 

3、创建增强类,注意是创建一个类,里面写需要增强的方法

前置通知  aop:before目标方法运行之前调用
后置通知(出现异常不会调用)aop : after-returning在目标方法运行之后调用 
环绕通知  aop:around在目标方法之前和之后都调用
最终通知(无论是否出现异常都会调用)aop:after在目标方法运行之后调用
异常增强      aop:after-throwing程序出现异常时执行(要求程序代码中不要处理异常)

 

 

 

 

 

 

 

比如,下面的例子MyAop中,就是写了三个切面方法,我们的AOP中的逻辑关系,与业务逻辑的代码的联系都是在配置文件.xml中实现的

配置文件中的aop配置

①首先将增强类对象加载进IOC容器

②建立增强类和目标方法之间的联系

  1. 首先需要明确,业务需求在哪加入增强配置,即切点
  2. 明确切点之后,将增强类的方法作为切面,“切”过去

找到切点(pointcut),插入切面(aspect),切面依赖于切点

 

补充——>环绕通知在类中如何定义

 

 

在增强类里的方法,不仅仅可以在执行目标方法的前后加上一些代码,我们还可以获取切点的信息

获取切点的信息 

输出结果:

 

除了上面这种通过jointPoint方式获取到切点的信息之外,我们还可以通过一个特殊的前置增强Advisor来获取到切点的信息

 

前置增强Advisor的使用

先创建一个单独的类,继承于  MethodBeforeAdvice

配置文件的配置:

执行结果:

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你在狗叫什么、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值