Spring aop切面编程

15 篇文章 0 订阅

在程序运行期间,不修改代码的情况下,对方法进行增强。

优点:

减少重复代码,提高开发效率,维护方便。

AOP实现原理:

1,JDK动态代理,需要接口

2,Cglib动态代理,不需要接口,只需要类即可。

java 动态代理_angen2018的博客-CSDN博客


JoinPoint:连接点,所有可以被增强的方法

类里面哪些方法可以被增强,这些方法被称为连接点。在spring的aop中,指的是业务层的类的所有现有方法。

Pointcut:切入点,具体项目中真正已经被增强的方法。

在类中有很多方法可以被增强,但是实际开发中,我们增强的往往就那几个,那么这些被实际增强的方法叫切入点。

Advice:通知/增强,具体用于增强方法的代码。

比如给某个切入点扩展校验权限的功能,那么这个校验权限就是增强或者通知。

通知分为:

1,前置通知@Before():原来方法执行之前

2,后置通知@AfterReturning():原来方法执行之后,特点:可以得到被增强方法的返回值

3,环绕通知@Around:在方法之前和之后执行,特点:可以阻止目标方法执行

4,异常通知@AfterThrowing:在目标方法出现异常时执行,如果方法没有异常出现,则不执行。特点:可以获取异常信息

5,最终通知@After():无论方法是否有异常,总是被执行的。

切面:

把通知应用到切入点的过程


依赖

<dependencies>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.22.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.22.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.22.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.5</version>
        </dependency>

    </dependencies>

通过xml配置文件来应用aop

spring aop配置文件方式使用_angen2018的博客-CSDN博客_springaop配置文件

SpringAOP中的JointPoint和ProceedingJoinPoint使用详解(附带详细示例)_如何在5年薪百万的博客-CSDN博客_proceedingjoinpoint.getargs

通过注解方式配置切面

https://www.jianshu.com/p/817848e78094?u_atoken=07d67c92-efd3-4510-84e6-9da31a277a09&u_asession=01f87lC8XjnpvOP1JyVAiQIo3lZK2Ff7On29Ij1uCgDKiOwhRJ30D-oyAQBFyPtx0OX0KNBwm7Lovlpxjd_P_q4JsKWYrT3W_NKPr8w6oU7K_EX-UgVZDfmFZSY4bq1fBbslvTX-jMTLEIhdGFg3rxgWBkFo3NEHBv0PZUm6pbxQU&u_asig=05AuiogwoKKcxKt5qAOOwfnt1N9EQTa1lbaQYlPDXPftQ66g_Yt8WispLsSmWa75ydXxxhdiJcB-wGEcZK5PaxP4wqOGUB5kfNCAqktgcGfpuZA9Vko425daNzN3JEBMUnWDhwA4dbXVwk11BYN6c7zA0-Nw0agqIY-BlZfJMRR0_9JS7q8ZD7Xtz2Ly-b0kmuyAKRFSVJkkdwVUnyHAIJzQt7y4cFy_uw5NpwL8IsOqXLEm1rMbJzrKpDcgw8RSOq6FPw117USKdEPc8n7HkzU-3h9VXwMyh6PgyDIVSG1W-tY42kj9DUVecBbC8F5Rb_yVBaI0FPIhiohXoTwrQ-uHNdk8Ivgs1A0RPCDMbZA6lBiPvyhPb8XP1G9OS2e-1ymWspDxyAEEo4kbsryBKb9Q&u_aref=k70ekuBzBOKcSeQJFH8Wi1D7sww%3D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值