【精选】64道题拿下Spring(第一篇)

Spring面试题

1、什么是 Spring Framework?

  • Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。

  • 它是轻量级、松散耦合的。

  • 它具 有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。

  • 它可 以集成其他框架,如 Structs、Hibernate、EJB等,所以又称为框架的框架。

2、列举 Spring Framework 的优点。

  • 由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。

  • Spring Framework 支持POJO(Plain Old Java Object) 编程,从而具备持续集成和可测试性。

  • 由于依赖注入和控制反转, JDBC 得以简化。并且它是开源免费的。

3、Spring Framework 有哪些不同的功能?

  • 轻量级 - Spring 在代码量和透明度方面都很轻便。

  • IOC - 控制反转 AOP - 面向切面编程可以将应用 业务逻辑和系统服务分离,以实现高内聚。

  • 容器 - Spring 负责创建和管理对象(Bean)的生命周期和 配置。

  • MVC对 web 应用提供了高度可配置性,其他框架的集成也十分方便。

  • 事务管理 - 提供了用于事 务管理的通用抽象层。

  • Spring 的事务支持也可用于容器较少的环境。JDBC异常 - Spring的 JDBC 抽象 层提供了一个异常层次结构,简化了错误处理策略。

4、Spring Framework 中有多少个模块,它们分别是什 么?

Spring 核心容器 –该层基本上是 Spring Framework 的核心。它包含以下模块:

  1. Spring Core

  2. Spring Bean

  3. SpEL (Spring Expression Language)

  4. Spring Context

数据访问/集成 –该层提供与数据库交互的支持。它包含以下模块:

  1. JDBC(Java DataBase Connectivity)

  2. ORM (Object Relational Mapping)

  3. OXM (Object XML Mappers)

  4. JMS(Java Messaging Service)

TransactionWeb –该层提供了创建 Web 应用程序的支持。它包含以下模块:

  1. Web

  2. Web – Servlet

  3. Web – Socket

  4. Web – Portlet

AOP

该层支持面向切面编程

Instrumentation

该层为类检测和类加载器实现提供支持。

Test

该层为使用 JUnit 和 TestNG 进行测试提供支持。

几个杂项模块:

Messaging – 该模块为 STOMP 提供支持。

它还支持注解编程模型,该模型用于从 WebSocket 客户端 路由和处理 STOMP 消息。

Aspects – 该模块为与 AspectJ 的集成提供支持。

5. 什么是spring?

Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。

6、什么是 Spring 配置文件?

Spring 配置文件是 XML 文件。该文件主要包含类信息。它描述了这些类是如何配置以及相互引入的。

但是 ,XML 配置文件冗长且更加干净。

如果没有正确规划和编写,那么在大项目中管理变得非常困难

7、Spring 应用程序有哪些不同组件?

Spring 应用一般有以下组件:

接口 - 定义功能。

Bean 类 - 它包含属性,setter 和 getter 方法,函数等。

Spring 面向切面编程(AOP) - 提供面向切面编程的功能。

Bean 配置文件 - 包含类的信息以及如何配置它们。

用户程序 - 它使用接口。

8、使用 Spring 有哪些方式?

使用 Spring 有以下方式:

作为一个成熟的 Spring Web 应用程序。

作为第三方 Web 框架,使用 Spring Frameworks 中间层。

用于远程使用。

作为企业级 Java Bean,它可以包装现有的 POJO(Plain Old Java Objects)。

9、 Spring AOP/IOC

Ioc的作用

ioc容器 控制反转 依赖注入

存储bend, servlet,接口 反射对象 Component用存储到map中

使用时通过依赖注入放射各种对象的属性数据 启动时xml文件就可以读取

在没有的ioc容器中运行中都是需要主动去创建对象去注入

在加入的ioc容器中运行中都是ioc自动创建对象去注入

把控制权交给spring来自动处理

Aop的作用

面向切面 将交叉的java业务逻辑(安全日志事务)封装成切面 然后注入对象

在满足定义的需求是自动注入

ioc是什么

ioc 是spring中控制反转的

ioc容器为一个耦合的大容器各种代码通过这个容器建立联系存储数据

他就像粘合剂成个主体掌控个个区域进来的代码粘合起来发挥作用

控制反转

没有注入ioc容器时 a依赖于b 那么初始化时必须要手动去创建b对象 主动权在自己手中

注入ioc a依赖于b 那么初始化的时候ioc容器会自动创建一个b调用到a需要的地方

吧控制权交个spring去处理

依赖注入

在依赖注入中,您不必创建对象,但必须描述如何创建它们。

您不是直接在代码中将组件和服务连接在 一起,而是描述配置文件中哪些组件需要哪些服务。

由 IoC容器将它们装配在一起。

注入的方式

Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:

  1. 构造方法注入

  2. setter注入

  3. 基于注解的注入

通常,依赖注入可以通过三种方式完成。

10、spring 事务实现方式有哪些?

  • 编程式事务管理对基于 POJO 的应用来说是唯一选择。我们需要在代码中调用beginTransaction()、commit()、rollback()等事务管理相关的方法,这就是编程式事务管理。

  • TransactionProxyFactoryBean 或者@Transactional 的声明式事务管理

  • AOP 配置事务

11、ApplicationContext通常的实现是什么?

  • FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。

  • ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你需要正确设置classpath因为这个容器将在classpath里找bean配置。

  • WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean。

12、区分 BeanFactory 和 ApplicationContext。

13、Spring IoC 的实现机制。

Spring 中的 IoC 的实现原理就是工厂模式加反射机制。

实例:

interface Fruit {  public abstract void eat();  }
class Apple implements Fruit {  public void eat(){   System.out.println("Apple");  }  }
class Orange implements Fruit {   public void eat(){    System.out.println("Orange");  } }
class Factory {  public static Fruit getInstance(String ClassName) {   Fruit f=null;   try {    f=(Fruit)Class.forName(ClassName).newInstance();   } catch (Exception e) {     e.printStackTrace();   }  return f;
    }  }
class Client {  public static void main(String[] a) {   Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");   if(f!=null) {    f.eat();  }   } }

14、什么是 spring bean?

它们是构成用户应用程序主干的对象。

Bean 由 Spring IoC 容器管理。

它们由 Spring IoC 容器实例化,配置,装配和管理。

Bean 是基于用户提供给容器的配置元数据创建。

15、spring 提供了哪些配置方式?

基于 xml 配置

bean 所需的依赖项和服务在 XML 格式的配置文件中指定。这些配置文件通常包含许多 bean 定义 和特

定于应用程序的配置选项。它们通常以 bean 标签开头。例如:

<bean id="studentbean" class="org.edureka.firstSpring.StudentBean">  <property name="name" value="Edureka">     //*****  </property> </bean>

基于注解配置

您可以通过在相关的类,方法或字段声明上使用注解,将 bean 配置为组件类本身,而不是使用 XML来描述 bean 装配。

默认情况下,Spring 容器中未打开注解装配。

因此,您需要在使用它之前在 Spring配

置文件中启用它。例如:

<beans>  <context:annotation-config/>  <!-- bean definitions go here --> </beans>

基于 Java API 配置

Spring 的 Java 配置是通过使用 @Bean 和 @Confifiguration 来实现。

1、 @Bean 注解扮演与 元素相同的角色。

2、 @Confifiguration 类允许通过简单地调用同一个类中的其他 @Bean 方法来定义 bean 间依赖关系。

例如 :

@Configuration public class StudentConfig {  @Bean  public StudentBean myStudent() {    return new StudentBean();  }  }

#面试复盘##春招##八股文##面经##秋招#
小码哥高频面经及八股文 文章被收录于专栏

宝剑锋从磨砺出,梅花香自苦寒来,我是小码哥为你圆梦大厂少走弯路,值得关注。

全部评论
点赞
送花
回复
分享
发布于 2022-06-09 14:21

相关推荐

11 65 评论
分享
牛客网
牛客企业服务