返回顶部
首页 > 资讯 > 精选 >一文教你使用AspectJ
  • 670
分享到

一文教你使用AspectJ

aspectjct 2023-05-31 16:05:22 670人浏览 薄情痞子
摘要

本篇文章为大家展示了一文教你使用AspectJ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。aop虽然是方法论,但就好像OOP中的Java一样,一些先行者也开发了一套语言来支持AOP。目前用得比较火

本篇文章为大家展示了一文教你使用AspectJ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

aop虽然是方法论,但就好像OOP中的Java一样,一些先行者也开发了一套语言来支持AOP。目前用得比较火的就是AspectJ了,它是一种几乎和Java完全一样的语言,而且完全兼容Java(AspectJ应该就是一种扩展Java,但它不是像Groovy[1]那样的拓展。)。当然,除了使用AspectJ特殊的语言外,AspectJ还支持原生的Java,只要加上对应的AspectJ注解就好。所以,使用AspectJ有两种方法:

完全使用AspectJ的语言。这语言一点也不难,和Java几乎一样,也能在AspectJ中调用Java的任何类库。AspectJ只是多了一些关键词罢了。

或者使用纯Java语言开发,然后使用AspectJ注解,简称*@AspectJ*。

AspectJ的配置可以参考另一篇文章Android中使用AspectJ详解

Join Points介绍

Join Points是AspectJ中的一个关键概念。Join Points可以看作是程序运行时的一个执行点,比如:一个函数的调用可以看作是个Join Points,如Log.e()这个函数,e()可以看作是个Join Points,而调运e()的函数也可以认为是一个Join Points;设置一个变量,或者读取一个变量也可以是个Join Points;for循环也可以看作是Join Points。

理论上说,一个程序中很多地方都可以被看做是Join Points,但是AspectJ中,只有下面所示的几种执行点被认为是Join Points:

Join Points说明示例
method call函数调用比如调用Log.e(),这是一处JPoint
method execution函数执行比如Log.e()的执行内部,是一处Join Points。注意它和method call的区别。method call是调用某个函数的地方。而execution是某个函数执行的内部。
constructor call构造函数调用和method call类似
constructor execution构造函数执行和method execution类似
field get获取某个变量比如读取DemoActivity.debug成员
field set设置某个变量比如设置DemoActivity.debug成员
pre-initializationObject在构造函数中做得一些工作。
initializationObject在构造函数中做得工作
static initialization类初始化比如类的static{}
handler异常处理比如try catch(xxx)中,对应catch内的执行
advice execution这个是AspectJ的内容,稍后再说

这里列出了AspectJ所认可的JoinPoints的类型。实际上,也就是你想把新的代码插在程序的哪个地方,是插在构造方法中,还是插在某个方法调用前,或者是插在某个方法中,这个地方就是Join Points,当然,不是所有地方都能给你插的,只有能插的地方,才叫Join Points。

Pointcuts介绍

一个程序会有多个Join Points,即使同一个函数,也还分为call和execution类型的Join Points,但并不是所有的Join Points都是我们关心的,Pointcuts就是提供一种使得开发者能够选择自己需要的JoinPoints的方法。

Advice

Advice就是我们插入的代码以何种方式插入,有Before还有After、Around。

看个例子

@Before("execution(* android.app.Activity.on**(..))")public void onActivityMethodBefore(JoinPoint joinPoint) throws Throwable {}

--结束END--

本文标题: 一文教你使用AspectJ

本文链接: https://lsjlt.com/news/227066.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 一文教你使用AspectJ
    本篇文章为大家展示了一文教你使用AspectJ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。AOP虽然是方法论,但就好像OOP中的Java一样,一些先行者也开发了一套语言来支持AOP。目前用得比较火...
    99+
    2023-05-31
    aspectj ct
  • 一文教你使用MyBatis
    这期内容当中小编将会给大家带来有关一文教你使用MyBatis,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是 MyBatisMyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架...
    99+
    2023-05-31
    mybatis
  • 一文教会你在MySQL中使用DateTime
    目录mysql 日期时间教程  MySQL 日期和时间类型MySQL 日期时间  简单的日期和时间计算  日期函数的基本算术运算  NOW() 函数  CURRENT_D...
    99+
    2024-04-02
  • 一文教你如何优雅的使用WebSocket
    目录简介特性使用场景具体实现一、首先是服务端代码,这里我用的是nodejs。二、然后是客户端代码总结简介 websocket是基于TCP的一种双向通信协议。在此之前,一直是采用轮询的...
    99+
    2024-04-02
  • 一文看懂:手把手教你使用ChatGPT
    自去年年底推出以来,这款新的人工智慧语言处理工具一直处于潮流的顶端,那么你该如何使用它呢?人工智慧聊天机器人ChatGPT 的大火掀起了国内外对相关概念公司的投资热潮。那么,ChatGPT 为什么这么火,为什么说它可能颠覆传统的搜寻引擎,普...
    99+
    2023-02-09
    ChatGPT
  • 一文教会你vue中使用async和await
    目录引言async和await定义使用场景实战场景补充:vue中async await请求处理小结引言 在我们进行实际开发中会遇到异步请求的问题,这时候我们的异步请求的存在就非常的具...
    99+
    2022-11-13
    vue使用async await vue async await
  • 一文教你如何使用原生的Feign
    目录什么是Feign为什么使用Feign为什么要使用HTTP client为什么要使用Feign如何使用Feign项目环境说明引入依赖入门例子个性化配置更换为Spring的注解自定义...
    99+
    2024-04-02
  • 一文教你如何在java中使用SpringMVC
    这期内容当中小编将会给大家带来有关一文教你如何在java中使用SpringMVC,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、简介在SpringMVC 中,控制器Controller 负责处理由Dis...
    99+
    2023-05-31
    java springmvc ava
  • 一文教你正确的使用Spring boot框架
    今天就跟大家聊聊有关一文教你正确的使用Spring boot框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言首先来说一下为什么使用 Spring Boot,之前我用的后端 WE...
    99+
    2023-05-31
    springboot spring boo
  • 一文教你如何在Java 中使用Calendar类
    今天就跟大家聊聊有关一文教你如何在Java 中使用Calendar类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java Calendar类的使用总结  在实际项目当中,我们经常会...
    99+
    2023-05-31
    java calendar ava
  • 一文教你如何使用Databinding写一个关注功能
    目录前言目标ModlePresenter前言 但是没有合理的架构,大家写出来的代码很可能是一大堆的复制粘贴。比如十几个页面,都有这个关注按钮。然后,你是不是也要写十几个地方呢 然后修...
    99+
    2024-04-02
  • 一篇文章教会你使用gs_restore导入数据
    目录背景信息命令格式示例总结背景信息 gs_restore是openGauss提供的针对gs_dump导出数据的导入工具。通过此工具可将由gs_dump生成的导出文件进行导入。 gs_restore工具由操作系统用户om...
    99+
    2024-04-02
  • 一文教会你使用Python批量缩放图片
    目录导读实际演示阶段详细介绍该库总结导读 为了解决图片被改变大小后,比例保持不变(这样就不会变形了) 图片需要压缩,避免填图后的word文件太大通过Image模块中的resize函数...
    99+
    2024-04-02
  • 一文教你如何使用Python绘制瀑布图
    目录前期准备方法一:waterfall_ax方法二:waterfall_chart方法三:plotly什么是瀑布图?瀑布图用表达两个数值之间的变化过程,过程值为正的时候,向上加,过程...
    99+
    2023-05-16
    Python绘制瀑布图 Python 瀑布图
  • 一文教你正确的在java中使用枚举
    一文教你正确的在java中使用枚举?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java枚举使用详解在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而...
    99+
    2023-05-31
    java 枚举 ava
  • 一文教会你用Python读取PDF文件
    目录实战场景Python PDF 实战编码补充实战场景 Python 工程师在日常的工作中,经常会碰到解析和处理PDF文件的情况,实战中需求主要分为如下情况: 提取 PDF 中的文字...
    99+
    2024-04-02
  • Android中使用AspectJ详解
    什么是AOP AOP是Aspect Oriented Programming的缩写,即『面向切面编程』。它和我们平时接触到的OOP都是编程的不同思想,OOP,即『面向对象编程』...
    99+
    2022-06-06
    aspectj Android
  • android中怎么使用Aspectj
    要在Android中使用AspectJ,需要进行以下步骤:1. 配置AspectJ插件:在项目的build.gradle文件中添加A...
    99+
    2023-08-23
    android Aspectj
  • 一文教你使用Java8中的静态接口方法
    一文教你使用Java8中的静态接口方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。默认方法默认方法让我们能给我们的软件库的接口增加新的方法,并且能保证对使用这个接口的老版本代...
    99+
    2023-05-31
    java8 静态接口 ava
  • 一文教你用Pyecharts做交互图表
    一、Pyecharts简介和安装 1、简介 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作