1. 什么是SpringIOC
SpringIOC指的是控制反转,应用程序对象的创建,配置,维护,依赖交给了SpringIOC容器统一进行管理,从而实现松耦合。
2. 说一下SpringIOC的实现原理
使用反射机制+xml技术
3. 什么是SpringAOP
AOP,即面向切面编程。作为OOP的一种补充技术,传统的OOP是自伤而下的逻辑开发。而AOP是利用一种横切技术,将一个项目一刀切下来,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为 “Aspect” , 即切面。所谓“切面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。可用于权限认证、日志、事务处理。
4. AOP应用场景
场景一: 记录日志
场景二: 监控方法运行时间 (监控性能)
场景三: 权限控制
场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )
场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )
5. AOP的实现原理
Spring中AOP的有两种实现方式:
1、JDK动态代理 :通过接口创建动态类的实例,而不能对类创建动态代理,需要获得目标类的接口信息,生成一个实现了代理接口的动态代理类,再通过反射机制获得动态代理类的构造函数,利用构造函数实例化动态代理类。再调用具体方法前调用invokeHandel方法来处理。
2、Cglib动态代理:是一个代码生成的类库,可以在运行时动态的生成指定类的一个子类对象,并覆盖其中特定方法并添加增强代码,从而实现AOP。CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。