大家都知道,随着科学技术水平的不断变革与发展,人们对于新技术的学习也越来越积极主动。尤其是关于java的学习更是成为了热门的编程语言。今天就来为大家介绍java中SSM框架面试题,IOC和AOP底层实现原理。一起来了解一下吧。

首先说一下,IOC底层实现原理

概念:

IOC是面向对象编程中的一种设计原则,IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦。所谓IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。

是将创建对象的控制权进行转移,以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到第三方。

实现原理:

它是通过反射机制+工厂模式实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。

控制反转就是:获得依赖对象的方式反转了。`

1、依赖注入发生的时间

(1).用户第一次通过getBean方法向IoC容索要Bean时,IoC容器触发依赖注入。

(2).当用户在Bean定义资源中为元素配置了lazy-init属性,即让容器在解析注册Bean定义时进行预实例化,触发依赖注入。

2.依赖注入实现在以下两个方法中:

(1).createBeanInstance:生成Bean所包含的java对象实例。

(2).populateBean:对Bean属性的依赖注入进行处理。

然后是,AOP底层实现原理

概念:

AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented

Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。

而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。

简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

AOP的核心思想就是将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。

AOP的实现

实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

动态代理:提供一个基础的接口,作为被调用类型(com.mycorp.HelloImpl)和代理类之间的统一入口,如com.mycorp.Hello。

实现InvocationHandler,对代理对象方法的调用,会被分派到其invoke方法来真正实现动作。

通过Proxy 类,调用其newProxyInstance方法,生成一个实现了相应基础接口的代理类实例。

Java在JDK1.3后引入的动态代理机制,使我们可以在运行期动态的创建代理类。使用动态代理实现AOP需要有四个角色:被代理的类,被代理类的接口,织入器,和InvocationHandler,而织入器使用接口反射机制生成一个代理类,然后在这个代理类中织入代码。被代理的类是AOP里所说的目标,InvocationHandler是切面,它包含了Advice和Pointcut。

以上就是关于java中SSM框架面试题,IOC和AOP底层实现原理的主要内容了。