对Aspect一直停留在理论阶段,对于编程而言,绝大多数时候,动手应该好过于理论&动嘴,所以决定好好学习下这方面的只是,无论是对自己的知识面,还是思想,都有所助益。

理论的知识,可能放在后面的系列,开始就直接Hello World吧。

首先我们需要配置环境,可以参照如下地址,图文并茂,写得很好,感谢作者的无私分享。

https://blog.csdn.net/gavin_john/article/details/80156963

对这篇文章补充几点。

补充一:下载AspectJ的安装jar后,如果你并不能双击运行jar,那么可以通过命令行的形式运行。 然后一直下一步即可,路劲之类的,随意即可。

java -jar aspectj-1.8.13.jar

补充二:作者的项目并没有使用maven,如果你使用maven,自然可以通过在pom文件中增加dependency的形式增加依赖。

<dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.9.2</version>
</dependency>

补充三:因为博文并没有增加package,如果你自己有包名,请做如下方式调整,不然虽然能够顺利编译,但缺无法看到效果:

package com.ripplechan.aspect;/*** @author RippleChan* @date 2019-01-05* @time 2:21*/
public aspect HelloWorld {void around():call(void com.ripplechan.aspect.MyClass.foo()){System.out.println("start...");proceed();System.out.println("end...");}}

补充四:因为IDEA的问题,编译方式经常因为增加依赖等原因变动,当你无法看到期望效果的时候,请检查你的编译方式是否是Ajc,配置如下:

结语:学到了什么?貌似什么都没有学到,除了语法。但,我好奇,这是什么原理?为什么要改编译方式?查看一下编译后的Class。

package com.ripplechan.aspect;import org.aspectj.runtime.internal.AroundClosure;public class MyClass {public MyClass() {}public void foo() {System.out.println("foo()");}public static void main(String[] args) {MyClass myClass = new MyClass();foo_aroundBody1$advice(myClass, HelloWorld.aspectOf(), (AroundClosure)null);}
}

通过Class文件,可以确定的是,Aspect是在编译期起效的,而不是运行期,这和Spring AOP是有区别的。

转载于:https://my.oschina.net/vright/blog/2997184

AspectJ入门(一)相关推荐

  1. AspectJ 入门篇

    AspectJ是AOP领域的较早的实现.AspectJ是在java语言基础上进行扩充的一门语言,扩充了自定义的关键字:并提供了自己的编译器ajc;在本文和接下来的系列文章中,将会与大家共同学习Aspe ...

  2. Spring @AspectJ 实现AOP 入门例子(转)

    AOP的作用这里就不再作说明了,下面开始讲解一个很简单的入门级例子. 引用一个猴子偷桃,守护者守护果园抓住猴子的小情节. 1.猴子偷桃类(普通类): Java代码   package com.samt ...

  3. SpringAOP-基于@AspectJ的简单入门

    一.AOP的基本概念: 连接点(Jointpoint):表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化.方法执行.方法调用.字段调用或处理异常等等,Spring只支持方法执行连接点,在A ...

  4. AspectJ——AOP框架快速入门

    一.导包 二.bean.xml配置 三.环绕通知 四,表达式 转载于:https://www.cnblogs.com/wmqiang/p/11617042.html

  5. 十二 Spring的AOP开发入门,整合Junit单元测试(AspectJ的XML方式)

    创建web项目,引入jar包 引入Spring配置文件 编写目标类,完成配置 编写测试类 Spring整合Junit单元测试 编写一个切面类 配置切面类,产生代理: <?xml version= ...

  6. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

  7. AOP埋点从入门到放弃(二)

    其实人最大悲哀莫过于知道自己想要什么,却不知道怎么坚持!最近迷恋上了死侍 其实和我平时的状态差不多,以一个混子的心态去做任何事情,往往成功的概率会更大!!! 一张图片镇楼!!! 上文说到了Aspect ...

  8. Spring Boot 入门

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  9. AOP配置开发入门案例

    该AOP开发入门案例采用XML文件方式配置开发(非注解方式)共包含一个xml文件和4个Java类,创建好web工程后引入相应jar包(文末会给出),建好包(若自定义包名注意更改类中的包名),将xml文 ...

最新文章

  1. 人工智能三大驱动力背后的CMOS传感器
  2. 【c++】11.重写、覆盖、using、typedef
  3. echarts设置折线图属性
  4. ITK:将BinaryMorphologicalClosingFilter应用于给定LabelMap的一个LabelObject
  5. C#中配置文件的使用
  6. 3月6日云栖精选夜读:如何实现32.5万笔/秒的交易峰值?阿里交易系统TMF2.0技术揭秘...
  7. python比较运算符重载_python运算符重载
  8. kotlin将对象转换为map_将网站转换为Photoshop文档
  9. Spring Cloud (断路器) Hystrix(三)
  10. 搜索的php mysql代码生成器_PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)...
  11. 凯迪拉克故障u1510案例_凯迪拉克XTS变速箱维修,无倒挡故障,自动变速箱维修案例...
  12. 苹果Mac视频格式转换器:Filmage Converter
  13. 公开SNS社区即时找朋友链的源代码和部署方案(续六)
  14. linux内存硬件检测工具下载,极品内存检测工具(Memtest86)
  15. 如何破解 App 网络代理后出现网络不可用的情况
  16. 数据铁笼-郑州Android项目ViewPager刷新问题
  17. ECMAScript 2022 正式发布
  18. ajax异步上传图片文件并将其转换为base64格式
  19. 信息学奥赛第十节 —— 贪心算法(渡河问题POJ 1700 Crossing River + 拦截导弹的系统数量求解)
  20. 【python学习.油价和美元汇率查询】

热门文章

  1. qml入门学习(八):通过loader对象动态加载和移除组件
  2. shell交互式输入
  3. 初二因式分解奥数竞赛题_八年级数学因式分解专项练习试题.doc
  4. pg安装部署linux_简简单单基于docker部署微服务网关
  5. linux不编译设备树,petalinux 编译时报设备树语义错误
  6. python抽签代码_Python(抽签问题),python实例,
  7. log4j slf4j实现_日志那点事儿——slf4j源码剖析
  8. 服务器装哪个操作系统好,服务器装哪个操作系统好
  9. android service 访问数据库,XE5 ANDROID通过webservice访问操作MSSQL数据库
  10. 使用php简单网页抓取和内容分析,使用PHP简单网页抓取和内容分析_php