AspectJ使用示例
来源:互联网 发布:武汉淘宝商学院骗局 编辑:程序博客网 时间:2024/06/11 00:34
AspectJ是一个面向切面的AOP框架,AOP的织入方式分为编译期织入、装载期织入、运行期织入。编译期织入是指在类编译期间利用特殊编译将切面织入到类中,这样生成到字节码中已经包含了切面;装载期织入是指在字节码加载到虚拟机时将切面织入到类中。
下面给出一个AspectJ使用示例,spark的rdd类中由很多写hdfs文件的方法,为了保证spark的执行效率,需要对这些方法进行屏蔽。
首先需要创建一个AspectJ切面文件SparkAspectJ.aj(Idea community不支持此功能,需要使用Ultimate版):
package com.iflytek.aspect;public aspect SparkAspect { public pointcut saveMethod() : execution(public void org.apache.spark.rdd.*.save*(*)); before() : saveMethod() { throw new RunTimeException(thisJoinPoint.getSignature().toString()); }}
定义的切入点为public org.apache.spark.rdd.*.save*(*) 含义为org.apache.spark.rdd包中任意类中以save开发的方法并且参数任意
接着需要在resource目录下的META-INF目录中创建一个aop.xml文件
<aspectj> <aspects> <aspect name="com.iflytek.aspect.SparkAspect"/> </aspects></aspectj>
在Idea中安装AspectJ Support插件,并且在Preferences中的Compiler->Java Compiler选择中选择ajc,其中的Path to ajc compiler选项选择apectjtools.jar。最后在启动参数VM oprion中添加-javaagent:aspectjweaver.jar。
写一个测试用例,spark.sql("select * from user").rdd.saveAsTextFile("test"),运行程序,可以发现抛出异常,表明定义的增加已被织入,
1 0
- @AspectJ使用示例
- AspectJ使用示例
- Spring AspectJ AOP 示例
- Spring AspectJ AOP 简单示例
- AspectJ AOP 简单示例2
- Spring AspectJ AOP 完整示例
- Spring AspectJ AOP 完整示例
- Spring AspectJ AOP 完整示例
- Spring AspectJ AOP 完整示例
- Spring AspectJ AOP 完整示例
- Spring AspectJ AOP 完整示例
- Spring AspectJ AOP 完整示例
- AspectJ使用经验
- AspectJ使用经验
- AspectJ使用经验
- spring AspectJ 基本使用
- 使用@AspectJ注解
- 使用@AspectJ注解
- 表单无法提交设为disabled的input
- spring之依赖注入之理解
- 请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功
- Sparse Graph HDU
- 一些最长的东西(dp+后缀数组)
- AspectJ使用示例
- react实现点击按钮添加一项(开始显示一项默认的) 点击每项按钮添加对应的小项
- 机器学习
- Linux命令基础11-more命令
- STL容器之string
- [实训]如何用eclipse创建用户库
- 模式的秘密——单例模式
- Linux下的虚拟地址映射详解(一)逻辑地址到线性地址的映射
- 技术人的未来在哪里?