2025年javaspring教程(javaspringaop)

javaspring教程(javaspringaop)div id navCategory div AOP 为 Aspect Oriented Programming 的缩写 意为 面向切面编程 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术 AOP 是 OOP 的延续 是软件开发中的一个热点 也是 Spring 框架中的一个重要内容 是函数式编程的一种衍生范型

大家好,我是讯享网,很高兴认识大家。



 <div id="navCategory"></div> 

讯享网

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

在这里插入图片描述
讯享网

提供声明式事务:允许用户自定义切面

  • 横切关注点:跨越应用程序多个模块的方法或功能.既是,与我们业务逻辑无关,但是我们需要关注的部分,就是横切关注点.如日志,安全,缓存,事务等…
  • 切面(ASPECT):横切关注点 被模块化 的特殊对象。即,它是一个类。
  • 通知(Advice):切面必须要完成的工作。即,它是类中的一个方法。
  • 目标(Target):被通知对象。
  • 代理(Proxy):向目标对象应用通知之后创建的对象。
  • 切入点(PointCut):切面通知 执行的 “地点”的定义。
  • 连接点(JointPoint):与切入点匹配的执行点。

在这里插入图片描述

在这里插入图片描述

即 Aop 在 不改变原有代码的情况下 , 去增加新的功能 .

【重点】需要导入一个依赖包!

execution (* com.db.dao….(…)) 整个表达式可以分为五个部分:

1、execution(): 表达式主体。

2、第一个*星号:表示返回类型,星号表示所有的类型。注意星号后面有个空格。

4、第二个*号:表示类名,星号表示所有的类。

5、*(…)最后这个星号表示方法名,星号表示所有的方法,后面括弧里面表示方法的参数,两个句点表示任何参数。

首先编写我们的业务接口和实现类

然后去写我们的增强类 , 我们编写两个 , 一个前置增强 一个后置增强

最后去spring的文件中注册 , 并实现aop切入实现 , 注意导入约束 .

测试

目标业务类不变依旧是userServiceImpl

第一步 : 写我们自己的一个切入类

在Spring中配置

第一步:编写一个注解实现的增强类

第二步:在Spring配置文件中,注册bean,并增加支持注解的配置

aop:aspectj-autoproxy说明:

通过aop命名空间的&lt;aop:aspectj-autoproxy /&gt;声明自动为spring容器中那些配置@aspectJ切面的bean创建代理,织入切面。当然,spring 在内部依旧采用AnnotationAwareAspectJAutoProxyCreator进行自动代理的创建工作,但具体实现的细节已经被&lt;aop:aspectj-autoproxy /&gt;隐藏起来了

&lt;aop:aspectj-autoproxy
/&gt;有一个proxy-target-class属性,默认为false,表示使用jdk动态代理织入增强,当配为&lt;aop:aspectj-autoproxy
poxy-target-class=“true”/&gt;时,表示使用CGLib动态代理技术织入增强。不过即使proxy-target-class设置为false,如果目标类没有声明接口,则spring将自动使用CGLib动态代理。

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!


小讯
上一篇 2025-05-26 14:23
下一篇 2025-05-01 10:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/144894.html