spring的面试题1(2021-12-13)

2021-12-13

1、谈谈你理解的Spring是什么?【难度系数:一颗星】

答:Spring是一个很庞大的生态体系。但是通常说到的Spring指的就是SpringFramework。Spring是一个轻量级的开源容器框架是一个IOC和AOP的容器框架【重点】Spring使用IOC解决了企业级开发的业务逻辑层和其他各层对象的直接耦合问题。AOP:可以对程序进行无缝的,无痕迹的进行增强。容器:创建并管理应用对象的生命周期。

2、Spring的优缺点是什么?【难度系数:两颗星】

优点=Spring的特性
1、IOC
2、AOP
3、声明式事务
4、集成的能力
5、封装了一些功能性的代码:

比如:
访问JDBC,封装了JDBCTemplate
进行rest接口的远程调用,使用RESTTemplate
封装了邮件相关的代码
封装了异步调用的代码
总结:就是简化了开发。
源码层面的优点:
IOC优点:集中管理了对象,使得对象与对象之间的耦合度降低,方便维护对象。比如:之前,需要创建单例对象,需要使用单例设计模式,现在有了IOC之后,使用单例对象,只需要将他配置为一个bean就好了。因为Spring中的bean默认就是单例的。如果需要多例对象,只需要配置scope就行了。如果需要设置bean的软加载的方式,只需要设置lazy-init=true就行。
AOP的优点:在不修改代码的情况下,可以对业务进行增强。减少重复的代码。,提高了开发效率且维护起来也很方便
声明式事务:提高了开发效率。只需要一个简单的注解@Transactional
Spring集成了各种优秀的框架:Spring拥有非常强大的粘合度,集成能力非常强,只需要简单的配置就可以实现集成第三方框架。这个依赖于它底层提供的各种扩展接口。
降低了javaee API的使用难度,封装了很多功能性的代码。我们可以直接学习。
Spring底层大量使用了反射技术,和java设计模式,提供了非常多的扩展接口。
缺点:
简化了开发,但是想深入底层,就非常难。
源码缺点:由于Spring大而全,代码量很庞大,一百多万行,深入学习有点难。

3、什么是SpringIOC容器?有什么作用?优点是什么?【一颗星】

IOC:控制反转。

控制了什么?

之前,创建一个对象都是new来实现,耦合度太高,维护不方便。

引入IOC,就将创建对象的控制权交给了Spring的IOC。以前由程序员自己控制对象的创建,现在交给Spring的IOC去创建。如果程序员需要使用这个对象,就需要通过DI依赖注入的方式,@Autowired自动注入。

优点:集中管理了对象,方便维护。

设置bean的单例和多例都很方便。

设置bean的懒加载模式也只需要写一个配置就好lazy-init=true

降低耦合度。

4、SpringIOC的实现机制是什么?【三颗星】

这里问的是实现机制,不是实现实现原理。

实现机制就是回答实现IOC的一些简单的技术点:

简单工厂的设计模式+反射

工厂:对应BeanFactory的getBean的方法。

反射:利用反射创建bean对象。

5、IOC和DI的区别?【2颗星】

IOC:控制反转。

控制了对象的创建权利。new的形式耦合性很高。

解决耦合度过高,使用IOC的设计思想。

现在创建对象都由Spring来控制对象的创建,由Spring

去维护对象和对象之间的依赖关系。

现在程序员需要对象,就需要去Spring的容器里面拿,需要Spring注入给我才能实现控制反装。

所以:

IOC是一种解决对象之间耦合度过高的设计思想。

DI是实现IOC最重要的一环。

6、紧耦合和松耦合之间的区别?如何编写松耦合的代码?【2颗星】

紧耦合:代码中直接new对象。加重类与类之间的高度耦合。

松耦合:通过设计原则。

面向对象的三大特性和五大原则。其中的五大原则就提供了松耦合的答案。

单一职责,接口分离,依赖倒置的设计原则实现。

单一职责:将不同功能的代码单独写在一个类里面。

接口分离:利用接口编程。

依赖倒置原则:之前,电脑没有鼠标不能启动。现在:电脑没有鼠标照样可以启动。

正转:主板 — 焊接 — 鼠标

反转: 电脑 <----依赖 <---- 鼠标

IOC就实现了依赖倒置原则。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值