当前位置: 首页 > news >正文

Java课题笔记~ AspectJ 的开发环境(掌握)

AspectJ 的开发环境(掌握) 

(1) maven 依赖

<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.26</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.3.26</version></dependency>
</dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins>
</build>

(2) 引入 AOP 约束

在 AspectJ 实现 AOP 时,要引入 AOP 的约束。配置文件中使用的 AOP 约束中的标签,均是 AspectJ 框架使用的,而非 Spring 框架本身在实现 AOP 时使用的。

AspectJ 对于 AOP 的实现有注解和配置文件两种方式,常用是注解方式。

 AspectJ 基于注解的 AOP 实现(掌握)

AspectJ 提供了以注解方式对于 AOP 的实现。

(1) 实现步骤

A、 Step1:定义业务接口与实现类

B、Step2:定义切面类

类中定义了若干普通方法,将作为不同的通知方法,用来增强功能。

 C、Step3:声明目标对象切面类对象

D、 Step4:注册 AspectJ 的自动代理

在定义好切面 Aspect 后,需要通知 Spring 容器,让容器生成“目标类+ 切面”的代理对象。这个代理是由容器自动生成的。只需要在 Spring 配置文 件中注册一个基于 aspectj 的自动代理生成器,其就会自动扫描到@Aspect 注 解,并按通知类型与切入点,将其织入,并生成代理。

<aop:aspectj-autoproxy />的底层是由 AnnotationAwareAspectJAutoProxyCreator 实现的。从其类名就可看出, 是基于 AspectJ 的注解适配自动代理生成器。

其工作原理是:通过扫描找到@Aspect 定义的切面类,再由切面类根据切入点找到目标类的目标方法,再由通知类型找到切入的时间点。

E、 Step5:测试类中使用目标对象的 id

http://www.lryc.cn/news/114749.html

相关文章:

  • 机器学习参数调优
  • [Java基础]面向对象-关键字分析:this,static,final,super
  • 数据结构初阶--二叉树的顺序结构之堆
  • NVM Command学习
  • TCP Socket 基础知识点(实例是以Java进行演示)
  • openCV图像读取和显示
  • requests 方法总结
  • Go语言删除文本文件中的指定行
  • Arthas GC日志-JVM(十八)
  • ISC 2023︱诚邀您参与赛宁“安全验证评估”论坛
  • 分享一个计算器
  • Android 13 Launcher——长按图标弹窗背景变暗
  • Elasticsearch概述和DSL查询总结
  • 扩展卡尔曼滤波器代码
  • 9:00开始面试,9:08就出来了,这问题问的实在是····
  • 揭秘:5个美国程序员与日本程序员的差异
  • Springboot实现简单JWT登录鉴权
  • C++设计模式创建型之工厂模式整理
  • 前端安全XSS和CSRF讲解
  • 本地化部署自建类ChatGPT服务远程访问
  • 一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)
  • 安全防御(3)
  • AR远程专家指导在汽车改装上的应用有哪些?
  • css-3:什么是响应式设计?响应式的原理是什么?如何做?
  • Armstrong数,n位数等于其各位数的n次方之和。
  • blender的下载安装和配置中文环境
  • MyCat配置rule.xml、server.xml讲解
  • Linux项目部署
  • 案例:Docker 镜像的创建及使用(commit与dockerfile方式)
  • QGIS二次开发三:显示Shapefile