Spring面试专题

1. 什么是Spring框架?Spring框架有哪些主要模块?

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

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

Spring框架采用的是分层架构,一系列功能被分为20个模块。这些模块主要是:Core Container(核心容器)、Data Access/Integration(数据访问/集成)、Web、AOP(面向切面编程)、Instrumentation(工具)、Messaging(消息传递)和Test(测试)。

2. 使用Spring框架能带来哪些好处?

1. 非侵入式设计

2. 方便解耦,简化开发

3. 支持AOP

4. 支持声明式事务处理

5. 方便程序的测试

6. 方便集成各种优秀框架

7. 降低Java EE API的使用难度

3. 什么是控制反转(IoC)?什么是依赖注入(DI)?

控制反转:在编程中,当我们用到一个对象时,首先需要主动创建它,但是在大型项目中,大家分工合作,也许我们要用到的对象对应的类还没有被编写出来,我们肯定没办法new出来,这个时候就有了Spring框架,对象交给Spring来创建(我们不关心也没有能力关心是否已经有了对应的类和Spring是否能够创建我们需要的对象),我们直接从Spring容器中获取对象使用即可,此前对象是由我们主动创建的,我们具有控制权,但使用Spring框架之后我们将创建对象的权力交给Spring,也就意味着我们对对象的控制权反转给了Spring,这就是控制反转。

控制未反转:由我们(开发者)来控制对象的创建。

控制反转:我们将创建对象的控制权交给了Spring,由Spring来控制对象的创建。

依赖注入:当我们需要用到一个对象的时候,从Spring容器中获取,这对于Spring来讲,就是将程序所依赖的对象注入到程序中,这就是所谓的依赖注入。

在Java中依赖注入有三种实现方式:

1. 构造器注入

2. Setter方法注入

3. 接口注入

4. 请解释下Spring框架中的IoC?

Spring中的org.springframework.beans包和org.springframework.context包构成了Spring框架IoC容器的基础。

BeanFactory接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。

ApplicationContext接口对BeanFactory(是一个子接口) 进行了拓展,在BeanFactory的基础上添加了其他功能,比如与Spring的AOP更容易集成,也提供了处理message resource的机制(用于国际化)、事件传播以及应用层的特别配置,比如针对Web应用的WebApplicationContext。

org.springframework.beans.factory.BeanFactory是Spring IoC容器的具体实现,用来包装和管理前面提到的各种bean。BeanFactory接口是Spring IoC容器的核心接口。

5. BeanFactory和ApplicationContext有什么区别?

BeanFactory:是Spring中比较原始,比较古老的Factory。以为比较古老,所以BeanFactory无法支持spring插件。例如:AOP、web应用等功能。

ApplicationContext是BeanFactory的子类,基本上代替了BeanFactory的工作。以一种更面向框架的工作方式以及上下文进行分层和实现继承,并在这个基础上对功能进行扩展:

1. MessageSource:提供国际化的消息访问。

2. 资源访问:URL和文件等。

3. 事件传递。

4. Bean的自动装配。

5. 各种不同的应用层的Context实现。


区别

1. 如果使用ApplicationContext,如果配置的Bean是Singleton(单例),那么不管你有没有或想不想用它,它都会被实例化。好处是可以预先加载,坏处是浪费内存。

2. BeanFactory,当使用BeanFactory实例化对象时,配置的Bean不会被马上实例化(懒着加载),而是等到你使用bean的时候才会被实例化。好处是节约内存,坏处是速度比较慢。多用于移动设备的开发。

3. 没有特殊要求的情况下,应该使用ApplicationContext完成。以为BeanFactory能完成的事情,ApplicationContext都能完成,并且提供了更加丰富的功能。

6. Spring有几种配置方式?

将Spring配置到应用开发中有三种方式:

         1. 基于XML的配置

2. 基于注解的配置

3. 基于Java的配置

上一篇:js的发布订阅模式


下一篇:自动化测试(四)031-js测试框架Jest——Mock与Spy之Mock函数提供三种特性-捕获函数调用情况、设置函数返回值、改变函数的内部实现