Spring切面优先级与基于xml的AOP实现方法详解

 更新时间:2022年11月09日 10:04:47   作者:学习使我快乐T  
这篇文章主要介绍了Spring切面的优先级与基于xml的AOP的详细步骤,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、切面的优先级

①创建类ValidateAspect:

由于要把我们的切面类和我们的目标类来进行ioc容器的一个组件,所以我们需要加上@Component注解,然后由于我们要把当前切面类来标识为一个组件,我们需要@Aspect注解

切面的优先级:

可以通过@Order注解的value属性设置优先级,默认值为Integer的最大值

@Order注解的value属性值越小,优先级越高

@Component
@Aspect
@Order(1)
public class ValidateAspect {
//    @Before("execution(* com.tian.spring.aop.annotation.CalculatorImpl.*(..))")
    @Before("com.tian.spring.aop.annotation.LoggerAspect.pointCut()")
    public void beforeMethod() {
        System.out.println("ValidateAspect-->前置通知");
    }
}

②测试类:

public class AOPTest {
    @Test
    public void testAOPByAnnotation() {
        ApplicationContext ioc = new ClassPathXmlApplicationContext("aop-annotation.xml");
        Calculator calculator = ioc.getBean(Calculator.class);
        calculator.div(10,1);
    }
}

二、基于xml的AOP实现(了解)

①复制基于注解的AOP实现的四个接口和类

②删除@Aspect注解(将组件标识为切面),切入点表达式的注解@Pointcut,把方法标识为通知方法的注解@Before...,@Order注解

③创建xml文件

    <!--扫描组件-->
    <context:component-scan base-package="com.tian.spring.aop.xml"></context:component-scan>
    <aop:config>
        <!--设置一个公共的切入点表达式-->
        <aop:pointcut id="pointCut" expression="execution(* com.tian.spring.aop.xml.CalculatorImpl.*(..))"/>
        <!--将IOC容器中的某个bean设置为切面-->
        <aop:aspect ref="loggerAspect">
            <aop:before method="beforeAdviceMethod" pointcut-ref="pointCut"></aop:before>
            <aop:after method="afterAdviceMethod" pointcut-ref="pointCut"></aop:after>
            <aop:after-returning method="afterReturningAdviceMethod" returning="result" pointcut-ref="pointCut"></aop:after-returning>
            <aop:after-throwing method="afterThrowingAdvice" throwing="ex" pointcut-ref="pointCut"></aop:after-throwing>
            <aop:around method="aroundAdviceMethode" pointcut-ref="pointCut"></aop:around>
        </aop:aspect>
        <aop:aspect ref="validateAspect" order="1">
            <aop:before method="beforeMethod" pointcut-ref="pointCut"></aop:before>
        </aop:aspect>
    </aop:config>

④测试类:

public class AOPByXMLTest {
    @Test
    public void testAOPByXML() {
        ApplicationContext ioc = new ClassPathXmlApplicationContext("aop-xml.xml");
        Calculator calculator = ioc.getBean(Calculator.class);
        calculator.add(1,2);
    }
}

到此这篇关于Spring切面优先级与基于xml的AOP实现方法详解的文章就介绍到这了,更多相关Spring切面优先级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文看懂JAVA设计模式之工厂模式

    一文看懂JAVA设计模式之工厂模式

    本文主要介绍了JAVA中设计模式的工厂模式,文中讲解非常详细,代码帮助大家更好的学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java实现浏览器端大文件分片上传

    Java实现浏览器端大文件分片上传

    本文主要介绍了Java实现浏览器端大文件分片上传,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java程序执行时间的2种简单方法

    Java程序执行时间的2种简单方法

    这篇文章介绍了Java程序执行时间的2种简单方法,有需要的朋友可以参考一下
    2013-09-09
  • Java动态编译执行代码示例

    Java动态编译执行代码示例

    这篇文章主要介绍了Java动态编译执行代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 让Java程序自动重启的实现方法(推荐)

    让Java程序自动重启的实现方法(推荐)

    下面小编就为大家带来一篇让Java程序自动重启的实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Feign实现跨服务文件上传下载

    Feign实现跨服务文件上传下载

    这篇文章主要为大家详细介绍了Feign实现跨服务文件上传下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 完美解决Get和Post请求中文乱码的问题

    完美解决Get和Post请求中文乱码的问题

    下面小编就为大家带来一篇完美解决Get和Post请求中文乱码的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 如何利用SpringBoot搭建WebService服务接口

    如何利用SpringBoot搭建WebService服务接口

    之前项目经理想要开发一个webservice的协议,给我一个星期的时间,后面用springboot开发了webservice,这篇文章主要给大家介绍了关于如何利用SpringBoot搭建WebService服务接口的相关资料,需要的朋友可以参考下
    2023-11-11
  • Java和Scala集合间的相互转换方式

    Java和Scala集合间的相互转换方式

    这篇文章主要介绍了Java和Scala集合间的相互转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • kafka运维consumer-groups.sh消费者组管理

    kafka运维consumer-groups.sh消费者组管理

    这篇文章主要为大家介绍了kafka运维consumer-groups.sh消费者组管理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论