spring中基于xml的AOP配置步骤

 # spring中基于xml的AOP配置步骤
  
  ####最近学习了spring中的aop配置,就写一篇关于基于xml的aop配置的文章。

这个文章都是xml文件当中的配置代码讲解

基于spring的ioc,要先把业务层的Service对象配置进来

<bean id="唯一标识符,可以自己定" class="填写服务类的具体实现类"></bean>

1.把通知bean交给spring来管理。

<bean id="唯一标识符,自己定" class="你要配置的通知所在的类"></bean>

2.使用aop:config标签来表明开始aop的配置

 <aop:config>  里面写步骤2以后的配置  </aop:config>    

3.使用aop:aspect 标签来表明配置切面,注意这个配置内容在步骤2中的aop:config标签内
属性包含 : id:唯一表示符,自己定
ref:是给指定的通知类bean的id,也就是你想要配置的通知类,也就是步骤1当中你自己定的id,相当于应用。

	<aop:aspect id="唯一标识符,内容自己定" ref="步骤1中的配置id">

4.在aop:aspect标签内配置通知的类型
提到这里我们必须要知道,通知的类型包含了前置通知,后置通知,异常通知,最终通知,以及环绕通知。

这里我们所讲到的基于xml文件来配置通知,所以我们只讲除开环绕通知的其他四种通知。因为我学习到的内容,环绕通知是在通知类当中通过proceed方法来提供我们进入环绕通知的接口。这是spring提供给我们手动控制代码增强的方法。

好的现在言归正传,继续回到四种通知的具体标签。

前置通知

<aop:before method="prePrintlog" pointcut=""></aop:before>-->

后置通知

  <aop:after method="finalPrintlog" pointcut=""></aop:after>-->

异常通知

<aop:after-throwing method="excePrintlog" pointcut=""></aop:after-throwing>

最终通知

<aop:after-returning method="afterPrintlog" pointcut=""></aop:after-returning>			

上面这四个通知中,后置通知和异常通知是不能同时出现的,因为只有在正常运行后才会运行后置通知,故异常通知将不会执行,而当异常出现时,则会执行异常通知,不会执行后置通知。

这里的四个标签的属性都是相类似,所以下面统一说明。

method:这里写明在通知类当中的方法名
pointcut:用于指定切点表达式,该表达式的意义在于对业务层的哪些方法进行具体的增强。就是在一开始我们所提到的服务层实现类的具体方法。

接下来我说一下具体的切点表达的写法。
关键字:excution(表达式)
表达式:访问修饰符,返回值类型,包名.包名.类名.类名.方法名(参数列表)这里的包名和类名的具体就是你的业务层实现类相对于这个项目文件的相对路径。
标准的表达式:public void Test.Service.printlog(i)
这里我们也可以使用通配符来简写表达式。
访问修饰符:这里的访问修饰符是可以省掉的。

返回数据类型:返回数据类型可以是用一个星号*来适配所有的返回类型,注意这里的后面必须有空格

包名类名:当然如果你这里的包名和类名中如果太多了,也可以使用通配符去适配那个包或类,一个星号*表示在上一层中的所有子内容都可适配。有几级包就要写几个星号* ,也可以使用..来表示当前包及其所有子包和类。方法名也可以是用星号*来适配,表示所有当前类中的方法

参数列表:可以使用一个星号表示所有的参数类型,这里要注意的是填写了星号*适配的是带参数的方法,并不能适配不含参数的方法,如果要适配带参数和不带参数的所有指定方法可以写..

全通配写法:也就是让这个类中的所有方法都得到加强

 * *..*.*(..)

但是要注意使用通配符有必须要在maven里添加依赖,如果没有添加这个依赖或者没有aspectj这jar包,将不能识别通配符中的*和.

 <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.8.7</version>

上面提到的环绕通知需要在通知类中写,给出一个我学习课程当中的实列

public Object aroundPrintf(ProceedingJoinPoint pjp){
        Object reValue;
        try {
            Object[] args = pjp.getArgs();   /*  得到方法的参数*/
            System.out.println("前置通知执行了");
            reValue = pjp.proceed(args); //这一行就是通知入口的接口。
            System.out.println("后置通知执行了");
            return reValue;

        }catch(Throwable t){
            System.out.println("异常通知执行了");
            throw new RuntimeException(t);


        }finally {
            System.out.println("最终通知执行了");
        }

    }

	


  

     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring,基于XML配置AOP步骤如下: 1. 添加依赖并准备环境。 2. 创建通知类和接口,并实现方法。 3. 配置spring.xml文件。 4. 执行测试。 具体步骤如下: 1. 创建通知类和接口,并实现方法。 2. 在spring.xml文件配置AOP。 3. 使用aop:config标签开始AOP配置。 4. 使用aop:aspect标签配置切面,其id属性是给切面提供一个唯一标识,ref属性是指定通知类bean的Id。 5. 在aop:aspect标签内部使用对应标签来配置通知的类型,例如使用aop:before标签配置前置通知。 6. 在aop:before标签,使用method属性指定Logger类哪个方法是前置通知,使用pointcut属性指定切入点表达式,该表达式指定了对业务层哪些方法进行增强。 7. 切入点表达式的写法可以使用关键字execution和具体的表达式来指定方法的访问修饰符、返回值、包名、类名和方法名等。 8. 在通知类添加环绕通知方法,使用ProceedingJoinPoint接口作为环绕通知的方法参数,该接口提供了proceed()方法,用于明确调用切入点方法。 9. 在环绕通知方法,可以通过proceedingJoinPoint.proceed(args)调用切入点方法,并在方法执行前后进行相应的操作。 10. 最后,执行测试来验证AOP配置的效果。 以上是基于XML配置AOP步骤。通过配置AOP,可以在指定的切入点方法执行前后,或者在方法执行过程进行增强操作。 #### 引用[.reference_title] - *1* *3* [Spring之基于XML配置AOP](https://blog.csdn.net/qq_38628046/article/details/108065715)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Spring基于XMLAOP配置](https://blog.csdn.net/weixin_45430616/article/details/104101117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值