lombok的切入和spring的aop切入的区别

本文纯属自用。。。。。不适合所有人。。。。
最近看到一道面试题,如果不使用spring,还有什么方式能够实现代理?答案是可以的,spring是运行时生成代理,还有另外一种方式就是编译时生成代理,将代码在编译时注入,这种注入是通过JAVA2EE提供的JSR的接口实现的。

基础概念

几个基本概念:

  1. 什么是字节码文件,什么是源文件
  2. 对应java语言而言,编译、运行是个怎样的过程
  3. 用java反射执行某个类的方法 和 通过对象.方法去执行一个方法有啥区别
  4. 什么是代理?代理的一些基本概念或者术语?
  5. 动态代理和静态代理的区别,这种代理是spring独有的嘛?
  6. 不依赖springIoc容器,可以实现代理吗?
  7. 代理为什么是非侵入式的?

字节码与源文件:
能直接被机器识别的是字节码文件,字节码文件就是.class文件;
源文件就是.java文件,我们编写代码就是在编写源文件

编译与运行:
编译就是将源文件转成字节码文件的过程
运行就是在jvm虚拟机上,把字节码文件解释执行的过程。只有程序真正在jvm上运行起来的时候,它才会获得内存

‘反射执行类的某个方法’与‘通过对象调用方法’有啥区别:
1>通过对象调用方法:现有.java文件 ->通过构造器获得对象->通过对象调用方法
2>通过反射调用方法:通过全限定名获取Class对象,Class.forName(“xxx”) ->通过Class对象获取一个实例对象obj;通过Class对象、传入指定方法名和方法参数类型来获取Method对象->通过Method.invoke(obj, “xxx”) 的方式执行方法
3>总结:正常的程序执行顺序是从源文件到字节码文件,而反射看起来……

代理:春运抢票,自己抢不到,让黄牛帮忙抢,黄牛就是代理。springaop里的相关术语:
目标对象:又叫被代理对象
切面:
切点、织入点:要切入的某个方法,指明是哪个包下的那个类里的某个方法
通知、advice:不要过分纠结“通知”这个字眼。通知类型可以分为:前置通知、后置通知、环绕通知、异常通知等???

非侵入式:你可以一路顺畅地写业务代码。非主线的逻辑就写在切面类里。清爽干净,井水不犯河水

aop是会依赖于springioc容器的,如果你怕对spring产生依赖,可以通过实现j2ee的JSR接口来达到类似的在编译时植入代码的目的。

写累了,未完待续……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值