java编译时aop,java程序员面试时问aop是什么 该怎么回答

1,java程序员面试时问aop是什么 该怎么回答面试就是要装B只说aop是面向切面编程只是个很基础的概念,看过点教程的初学者都知道所以必须得深化点,你得告诉他,aop实现原理其实是java动态代理,但是jdk的动态代理必须实现接口,所以spring的aop是用cglib这个库实现的,cglib使用了asm这个直接操纵字节码的框架,所以可以做到不实现接口的情况下完成动态代理 。最好拿张纸手写两个例子给他,然后他就没什么好问的了AOP就是面向切面编程,通常是在框架上利用AOP添加事物,权限,过滤器等 。aop是面向切面编程,主要记录日志,控制访问权限,与IOC(控制反转)组成spring的核心java aop面向方面编程
2,什么是AOPAOP的作用是什么aop是面向切面的编程 。它可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 。如果您学习java的话 , 会在spring中经常用到 , 那是你更能领悟它!AOP :面向切面编程 ,它主要关注的是程序的执行过程 。具体解析:在java方法调用时,AOP机制能自动进行方法拦截,允许在方法调用之前,调用后 , 以及执行异常时添加特点的代码来完成需要的功能 。特点:1,消除编码模块之间的耦合 。2,可以在任意阶段,向已有功能模块中填加新功能 , 且不侵入原有功能 低侵入式设计 3,各步骤之间的良好隔离性 , 源代码的无关性oop:纵向的业务 。Aop:oop的一个横向服务,是对oop进一步补充,提高安全、事务、日志等的集中式处理 。相关的装备 before、around、after
3,麻烦讲解一下Java中Spring中IOC和AOPIoC:说直白点,就是通过配置文件(XML或.properties)指定需要实例化的JAVA类(类名的完整字符串),包括该JAVA类的一组初始化值,然后我们在代码中加载该配置文件,然后通过 .getBean() 函数就可以得到一个该JAVA类的对象,并且该对象已经根据配置文件中指定的属性值进行了初始化 。AOP:这个比IoC更简单,直白点说就是实现调用某个方法之前或/和之后,自动执行一系列自定义的语句既然你问ioc 你就一定知道spring.sring中所有的bean对象管理都依赖于di/ioc,spring作为一个web级容器,它把所有的class类都可以转换为一个bean对象来管理 , 通过加载、实例这个bean对象 , 将它全部交给beanfactory来管理,在你通过applicationcontext.xml来使用和对其他bean注入的这个过程,可以理解为ioc,使用ioc可以降低项目的耦合度,实现类与类之间的无依赖性 。aop是面向切面编程,可以在项目中指定的位置执行指定的操作,例如事务管理,可以在所有非query的方法执行后都执行一次事务提交的操作 。不需要修改代码,通过xml配置 就可以完成这个操作 。【java编译时aop,java程序员面试时问aop是什么 该怎么回答】
4,Spring中的AOP概念本人暂且把spring 中的aop理解成一种方法的拦截器(可能有所片面 , 主要是方便理解) 。个人通俗理解,就好比你去自动取款机取钱 , 边上装了个摄像头在监视着 。你取你的钱,不用管那摄像头干嘛,只是对于摄像头来说 , 已经把你取钱的这一过程记录了下来 。你取钱的这一过程我们可以从oop角度分析,而对于摄像头来说,就是从aop角度去分析了 。反映到我下面要讲的示例就是系统日志的记录 。我要讲的示例大致是这样的,从oop角度分析,就是说现在有一个user对象,然后你要调用业务逻辑实现去保存(或者其他行为)这个user对象,或者说是做持久化操作,把user对象相关信息写进数据库 。那么从aop角度来看,就是在你进行保存对象这一行为发生的时候进行日志记录 。就是说,你在进行业务操作的时候,不需要去关心系统背后到底做了啥 , spring aop它已经帮你搞定了 。spring的APO是指面向切面编程,它的主要实现原理主要两种 。1. 通过Java动态代理(反射)机制,在要执行的方法前后,加上事务控制或日志 。2. 通过修改Java字节码的方式 , 修改你编译好的类,在要执行的方法前后,加上事务控制或日志 。通知、切入点等其实就是用来配置在什么类、什么位置来执行、执行什么方法 等 。举个列子:给下面的方法加上日志记录: public void save(Object data) //保存到数据库逻辑 }通过Spring AOP的方式配置日志后,最终程序执行时(也许是反射,也许是修改class),实际上在执行save(obj)时,执行了下面的逻辑:log.info("开始保存");save(obj);log.info("结束保存");spring的APO是指面向切面编程,它的主要实现原理主要两种 。1. 通过Java动态代理(反射)机制 , 在要执行的方法前后,加上事务控制或日志 。2. 通过修改Java字节码的方式,修改你编译好的类,在要执行的方法前后,加上事务控制或日志 。通知、切入点等其实就是用来配置在什么类、什么位置来执行、执行什么方法 等 。举个列子:给下面的方法加上日志记录: public void save(Object data) //保存到数据库逻辑 }通过Spring AOP的方式配置日志后,最终程序执行时(也许是反射,也许是修改class) , 实际上在执行save(obj)时,执行了下面的逻辑:log.info("开始保存");save(obj);log.info("结束保存");

    推荐阅读