史上最全Spring相关面试题(一)

简介: 史上最全Spring相关面试题(一)

一、什么是Spring框架


参考回答:
Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。

Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。


二、Spring框架有哪些主要模块?


参考回答:
Spring主要有七大功能模块,分别是以下七大模块:
(1)Core模块:Core模块是Spring的核心类库,Spring的所有功能都依赖于该类库,Core主要实现IOC功能,Sprign的所有功能都是借助IOC实现的。
(2)AOP模块:AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常用的拦截器,供用户自定义和配置。
(3)ORM模块:Spring 的ORM模块提供对常用的ORM框架的管理和辅助支持,Spring支持常用的Hibernate,ibtas,jdao等框架的支持,Spring本身并不对ORM进行实现,仅对常见的ORM框架进行封装,并对其进行管理。
4)DAO模块:Spring 提供对JDBC的支持,对JDBC进行封装,允许JDBC使用Spring资源,并能统一管理JDBC事物,并不对JDBC进行实现。(执行sql语句)
(5)WEB模块:WEB模块提供对常见框架如WEBWORK(Struts 2),JSF的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器。
(6)Context模块:Context模块提供框架式的Bean访问方式,其他程序可以通过Context访问Spring的Bean资源,相当于资源注入。
(7)MVC模块:MVC模块为Spring提供了一套轻量级的MVC实现,在Spring的开发中,我们既可以用Struts也可以用Spring自己的MVC框架,相对于Struts,Spring自己的MVC框架更加简洁和方便。


三、Spring有哪些优点值得我们去使用参考?


参考回答:
1)轻量级:Spring在大小和透明性方面绝对属于轻量级的,基础版本的Spring框架大约只有2MB。
(2)控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
(3)面向切面编程(AOP):Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。
(4)容器:Spring包含并管理应用程序对象的配置及生命周期。
(5)MVC框架:Spring的web框架是一个设计优良的web MVC框架,很好的取代了一些web框架。
(6)事务管理:Spring对下至本地业务上至全局业务(JAT)提供了统一的事务管理接口。
(7)异常处理:Spring提供一个方便的API将特定技术的异常(由JDBC, Hibernate, 或JDO抛出)转化为一致的、Unchecked异常。


四、什么是控制反转(IOC)?


参考回答:
IOC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。

传统的创建对象的方法是直接通过 new 关键字,而 spring 则是通过 IOC 容器来创建对象,也就是说我们将创建对象的控制权交给了 IOC 容器。IOC 让程序员不再关注怎么去创建对象,而是关注与对象创建之后的操作,把对象的创建、初始化、销毁等工作交给spring容器来做。

IOC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。


五、IOC的优点是什么?


参考回答:
IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。


六、什么是依赖注入(DI)?


参考回答:
依赖注入是在编译阶段尚未知所需的功能是来自哪个的类的情况下,将其他对象所依赖的功能对象实例化的模式。
这就需要一种机制用来激活相应的组件以提供特定的功能,所以依赖注入是控制反转的基础。


七、依赖注入有哪几种方式?


参考回答:

依赖注入常用的注入方式主要有三种:


(1)构造器注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。

(2)setter方法注入: Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

(3)接口注入:它是在一个接口中定义需要注入的信息,并通过接口完成注入。Apache Avalon 是一个较为典型的接口注入型 IOC 容器,WebWork 框架的 IoC 容器也是接口注入型。一般不推荐使用这种方式进行实现。


八、哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入,甚至是接口注入?


参考回答:
你两种依赖方式都可以使用,构造器注入和Setter方法注入。最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖。


九、什么是Spring beans?


参考回答:
Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中<bean/> 的形式定义。
Spring 框架定义的beans都是单件beans。在bean tag中有个属性”singleton”,如果它被赋为 TRUE,bean 就是单件,否则就是一个 prototype bean。默认是TRUE,所以所有在Spring框架中的beans 缺省都是单 件。


十、一个 Spring Bean 定义 包含什么?


参考回答:
一个Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖。


相关文章
|
23天前
|
Java Spring
Spring面试题pro版-5
Spring面试题pro版-5
15 0
|
23天前
|
Java Spring
Spring面试题pro版-4
Spring面试题pro版-4
15 0
|
23天前
|
XML Java 数据格式
Spring面试题pro版-3
Spring面试题pro版-3
30 0
|
23天前
|
设计模式 安全 Java
Spring面试题系列-6
Spring面试题系列-6
22 1
|
23天前
|
XML 安全 Java
Spring面试题系列-5
Spring面试题系列-5
15 1
|
23天前
|
设计模式 Java 数据库
Spring面试题系列-4
Spring面试题系列-4
19 1
|
23天前
|
XML 缓存 Java
Spring面试题系列-2
Spring面试题系列-2
20 1
|
23天前
|
Java 数据库连接 开发者
Spring面试题系列-1
Spring面试题系列-1
22 1
|
18小时前
|
监控 Java 应用服务中间件
Spring Boot 源码面试知识点
【5月更文挑战第12天】Spring Boot 是一个强大且广泛使用的框架,旨在简化 Spring 应用程序的开发过程。深入了解 Spring Boot 的源码,有助于开发者更好地使用和定制这个框架。以下是一些关键的知识点:
11 6
|
5天前
|
监控 Java 数据库连接
总结Spring Boot面试知识点
Spring Boot是一个基于Spring框架的开源项目,它简化了Spring应用的初始搭建以及开发过程。通过提供“约定优于配置”的方式,Spring Boot可以帮助开发者快速构建出生产级别的Spring应用。
13 0