学习
实践
活动
专区
工具
TVP
写文章

初识 AspectJ ~

AspectJ;和尚进行简单集成与测试; AspectJ 基本简介 AOP(Aspect Oriented Programming) 是一种面向切面编程,通过预编译方式和运行期动态代理实现程序功能统一维护一种技术 ;可以通过 AOP 对业务逻辑进行整体切面拆分,却又不影响业务逻辑,提高了开发效率和可重用性; AspectJ 适用于 Java 平台,是使用较为广泛 AOP 切面方案;提供了纯 Java 语言实现 ,通过注解方式,在编译期进行代码注入;即在编译阶段,就对目标类进行修改,得到 .class 文件已经是修改过,生成静态 AOP 代理类;和尚刚了解 AspectJ,需要了解几个最基本概念; 1 在应用 module 中添加,此步骤可省略 // 不是必须,但是为了有时候去掉上面插件不报错就需要增加 api 'org.aspectj:aspectjrt:1.9.4' 问题 & 修复 AspectJ ---- AspectJ 功能非常强大,和尚刚学习很多切入规则还不熟悉,仅尝试了最基本 @Around 方式获取方法耗时时间;和尚建议在编辑规则过程中,多审查几遍,防止出现因规则错误导致不容易查找崩溃

55510
  • 广告
    关闭

    618夏日盛惠

    2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    简单聊聊AspectJ

    1.AspectJ引入 考虑一个要在某些应用中实施安全策略问题。安全性是贯穿于系统所有模块间问题,而且每一模块都必须添加安全性才能保证整个应用安全性,并且安全性模块自身也需要安全性. 使用传统编程解决此问题非常困难而且容易产生差错,这就正是 AspectJ 发挥作用时候了。 2.相关概念 AspectJ 是一种面向方面程序(AOP)设计基于 Java 实现。 一个通知是当一个连接点到达时执行代码,这些都是AspectJ动态部分。 implementation 'org.aspectj:aspectjrt:1.9.4' ...... } import org.aspectj.bridge.IMessage import 具体可以参考关于 Spring AOP (AspectJ) 你该知晓一切,《AspectJ程序设计指南.pdf》.第一篇文章里面还有对相关概念详细解释

    53120

    Android使用AspectJ

    AspectJ定义了AOP语法,它有一个专门编译器用来生成遵守Java字节编码规范Class文件。简单来说,AspectJ是AOP一种实现框架。 2.2 使用 AspectJ是在编译期通过特殊编译器(ajc)在不改变代码前提下织入代码。所以我们有必要了解下ajc官方文档。 ajc通俗讲就是AspectJ编译器,在上方文档可以看到,可以进行一系列参数配置。 二、基本使用 1. implementation 'org.aspectj:aspectjrt:1.8.9' } 复制代码 1.6 总结 至此,你已经可以正常在项目中使用aspectj了~这里主要介绍aspectj使用 直接使用别人写好aspectj plugin 上述步骤挺繁琐,所以有人专门写好了相应插件:gradle_plugin_android_aspectjx 主要使用流程如下: 2.1 项目build.gradle

    78230

    【AOP 面向切面编程】AOP 简介 ( AspectJ 简介 | AspectJ 下载 )

    文章目录 一、AOP 简介 二、AspectJ 简介 三、AspectJ 下载 一、AOP 简介 ---- AOP 是 Aspect Oriented Programming 缩写 , 面向切面编程 ; 二、AspectJ 简介 ---- AspectJ 相关要素 : Aspect 切面 : Java 中类声明是 对事物抽象 , AspectJ Aspect 切面就是 对切面的抽象 , 连接点 after 之后进行操作 在 Join Point 连接点 around 前后都要进行操作 三、AspectJ 下载 ---- AspectJ 下载地址 : http://www.eclipse.org /aspectj/downloads.php 点击红色矩形框中链接 , 可以下载最新稳定版本 ; 下载下来 aspectj-1.8.10.jar 文件 , 可以直接运行 , 双击后 , 弹出如下对话框 ; aspectj-1.8.10.jar 文件中包含内容 : aspectj-1.8.10.jar 文件中包含 lib 库 : aspectj-1.8.10.jar 文件中包含 doc 文档

    10010

    AspectJ在android上开发

    Android上运用AOP思想开发,可以快速帮助我们简化在横向开发中重复性工作,简单说就是把涉及到众多模块某一类问题进行统一管理比如:性能检测、日志打印手机等。 AspectJ实际上是对AOP编程思想一个实践,当然,除了AspectJ以外,还有很多其它AOP实现,例如ASMDex、javassist等,但目前最好、最方便,依然是AspectJ。 直接贴例子 引入插件,这边是添加在app.gradle, 不是添加在项目的gradle中 import org.aspectj.bridge.IMessage import org.aspectj.bridge.MessageHandler import org.aspectj.tools.ajc.Main buildscript { repositories { mavenCentral() } dependencies { classpath 'org.aspectj:aspectjtools:1.8.1' //引入aspectjclasspath } } apply plugin: 'com.android.application

    63420

    【Spring实战】—— 13 AspectJ注解切面

    前面了解了典型AOP基于配置使用方法,下面介绍下如何依赖于注解来实现AOP。 基于注解降低了配置文件复杂程度,但是引入了程序间耦合,其中优劣待用户自己判断了。 需要注意是,确定AspectJ与JDK之间版本,否则会报错,详情请见。   首先看一下基于注解切面类,这时切面不仅仅是一个POJO类了,与AOP进行了紧密耦合。 package com.spring.test.chap44; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing ; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut 因此需要加上一个属性,保证AOP自动识别通知。 <aop:aspectj-autoproxy proxy-target-class="true"/>   配置文件如下: <?

    51050

    AspectJ与ASM与Javaassist

    AspectJ缺点是,由于其基于规则,所以其切入点相对固定,对于字节码文件操作自由度以及开发掌控度就大打折扣。 还有就是我们要实现是对所有方法进行插桩,所以代码注入后性能也是我们需要关注一个重要点,我们希望只插入我们想插入代码,而AspectJ会额外生成一些包装代码,对性能以及包大小有一定影响。 Javassist & ASM 对比 Javassist源代码级API比ASM中实际字节码操作更容易使用 Javassist在复杂字节码级操作上提供了更高级别的抽象层。 Javassist使用反射机制,这使得它比运行时使用Classworking技术ASM慢。 总的来说ASM比Javassist快得多,并且提供了更好性能。 Javassist使用Java源代码简化版本,然后将其编译成字节码。这使得Javassist非常容易使用,但是它也将字节码使用限制在Javassist源代码限制之内。

    41810

    springaop——AspectJ不可不知细节

    一、springaop——aspectJ详细讲解 1、aspectJ常用注解 1)@Pointcut 切点:简单理解就是一个匹配条件、规则,与切点函数组合使用。 说明@after后置增强方法,始终会被执行。 2.函数通配符 @AspectJ支持三种通配符 *:匹配任意字符,但是只能匹配一层或一个元素。 ..:匹配任意字符,可以匹配一个或多个元素。 ||(or):或运算符,计算切点并集。spring也增加了一个直观运算符or。与||等价。 !:非运算符,计算切点反集。spring同样也增加了一个直观运算符not。与!等价。 子类(实现类)。 注意:当需要匹配方法入参类型时,除了jdk自带基本类型及String可以在匹配规则中使用简写。其他类型,必须使用类型完整路径。 测试案例?

    1.2K50

    android字节码框架——AspectJ

    最常用字节码处理框架有 AspectJ、ASM 等等,它们相同之处在于输入输出都是 Class 文件。 AspectJ 优势 它优势有两点:成熟稳定、使用非常简单。 使用非常简单 AspectJ 可以在如下五个位置插入自定义代码: 1)、在方法(包括构造方法)被调用位置。 AspectJ 缺陷 AspectJ缺点: 1.切入点固定 AspectJ 只能在一些固定切入点来进行操作 2.正则表达式局限性 AspectJ 匹配规则采用了类似正则表达式规则,比如 如果你只插桩一小部分函数,那么 AspectJ 带来性能损耗几乎可以忽略不计。 下加入: apply plugin: 'android-aspectjx' implement 'org.aspectj:aspectjrt:1.8.+' 简单 AspectJ 示例

    26520

    Aspect-oriented programming with AspectJ

    这篇文章主要是介绍一个完整AOP系统基本概念。 研究了AspectJ语言规范和实现,并且展示了一个常见横切问题来说明AspectJ语法,并将它与Java进行了比较。 这要求使用特殊Java编译器,AspectJ是其中代表者; 2.类装载期织入。而这要求使用特殊类装载器,AspectJ和AspectWerkz是其中代表者; 3.动态代理织入。 AspectJ tooling support Eclipse AspectJ Development Tools (AJDT) Ant AspectJ编译器与Ant集成在一起,可以在任何Ant构建项目中运行 Conclusion 讲了下AspectJ发展前景很好(2012年)。一个很好例子是Spring框架,它特别允许AOP和AspectJ代码与框架无缝集成和使用。 在学术领域,AspectJ也经常用于软件设计优化。

    48350

    扫码关注腾讯云开发者

    领取腾讯云代金券