JAVA面经整理(9)

一)什么是Spring?它有什么优点?

spring是一款顶级的开源框架,他是包含了众多工具方法的IOC容器,Spring中包含了很多模块,比如说Spring-core,Spring-context,Spring-aop,Spring-web,从而更好地帮助我们开发JAVA程序;

1)管理对象的生命周期和依赖关系:Spring提供了IOC容器,它是用来管理应用程序中的对象的生命周期和依赖关系,通过使用DI,可以将对象的依赖关系从代码中抽离出来,使得代码具有可测试性和可维护性;

2)统一业务处理,面向切面编程:Spring本身支持AOP,能够分离横切关注点比如说日志和事务管理和核心业务逻辑;

3)事务管理:手动式事务+编程式事务

4)集成了很多的持久性框架:MyBatis

5)可测试性:

6)丰富的生态系统:提供了更多的第三方插件和库

7)国际化和本地化支持:使得应用程序可以使用不同的语言和地区

二)什么是IOC?对象生命周期的控制权限的反转,是一种思想

IOC是Inversion of Controll翻译成中文是控制反转的意思,它不是一个具体的技术而是用来实现对象解耦的思想,控制反转的意思就是将依赖对象的生命周期的控制权进行反转传统开发是将当前类new对象是控制依赖对象的生命周期,现在交给Spring IOC框架,这就是控制权发生了反转;

三)IOC的优点有哪些?

3.1)解耦合:IOC将组件之间的依赖关系从代码中抽离出来,实现了解耦合

3.2)代码的简洁性:IOC使得你的代码更加的关注于业务逻辑,而不需要过多的关注与依赖的创建和管理,这就是得代码更加清晰,简洁和易于管理

3.3)对象生命周期的管理:IOC容器可以管理组件的生命周期,确保Bean对象在合适的时间创建,初始化和销毁;

3.4)可重用性:默认的Bean对象都是单例模式,可以实现重用;

3.5)AOP实现基础:IOC是AOP实现的基础,允许将代理对象存放在IOC容器中

四)什么是DI:

DI是Dependency Injection的缩写,翻译成中文是依赖注入的意思,依赖注入不是一种设计实现而是一种具体的技术,它是在程序运行的过程中,动态地将某一个依赖对象注入到当前的对象的过程就叫做依赖注入,在程序运行过程中,动态地从Spring IOC容器中取出之前存放过的对象,也就是该程序运行过程中从SpringIOC容器中依赖的对象,从程序运行的过程中动态地将一个类注入到当前类中

就比如说在A对象中需要依赖B对象,那么在A对象运行过程中,动态地将依赖对象B注入到当前类中,而不是直接通过new的方式来获取到B对象的方式,就是依赖注入

五)IOC和DI有什么区别?

IOC和DI虽然定义不同,但是他们所做的事情都是相同的,都是来实现针对于对象进行解耦合的,IOC是一种思想,但是DI是一种实现,况且IOC除了依赖注入以外还可以通过依赖查找来实现,在Spring框架中可以通过ApplicationContext接口的getBean()方法来实现

六)说一下AOP:

1)AOP:是面向切面编程,对针对业务代码横切来实现统一的业务管理,而不用侵入业务代码本身,这样面向切面编程的思想就是AOP

使用场景:日志管理,事务管理,性能统计,安全控制,异常处理

2)优点:实现了代码的解耦,统一业务功能对具体业务没有什么侵入性,这样可扩展性更好,灵活性更高

3)Spring是采取动态代理的方式,具体是基于JDK和CGLIB两种:

JDK动态代理需要被代理类实现接口,使用的是反射的方式;

CGLIB需要被代理类能够被继承,不能被final修饰,底层是基于ASM字节码框架,在运行的时候动态生成代理类

4)SpringAOP如何进行使用:使用@Aspect来进行定义切面,并注册到容器里面,使用@Pointcut定义好切点方法之后,可以对目标方法来进行拦截,然后执行前置通知,后置通知之类的东西

JAVA面经整理(9)_第1张图片

JAVA面经整理(9)_第2张图片

你可能感兴趣的:(java,开发语言)