Spring aop切面编程

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

优点:

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

AOP实现原理:

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

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

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


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

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

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

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

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

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

通知分为:

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

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

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

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

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

切面:

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


依赖



        
            org.springframework
            spring-context
            5.2.22.RELEASE
        
        
            org.springframework
            spring-aop
            5.2.22.RELEASE
        
        
            junit
            junit
            4.13
        
        
            org.springframework
            spring-test
            5.2.22.RELEASE
        
        
            org.aspectj
            aspectjweaver
            1.9.5
        

    

通过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

你可能感兴趣的:(#,spring,java,spring,java)