spring面试题汇集与答案(spring面试题及答案高级)

2022-11-15 18:45:16 0

spring面试题汇集与答案(spring面试题及答案高级)

知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停地来唤醒记忆深处的知识点。

Q1。什么是Spring框架?

Spring是最流行的企业应用程序框架之一。Spring框架的核心基于依赖注入设计模式,该模型允许我们解耦依赖关系。

Q2。Spring有什么好处?

Spring Framework使构建企业Java应用程序更加容易

优点:

  • IoC容器:Spring使用其IoC容器管理Spring Bean和配置的生命周期,这使项目管理和维护更加容易。
  • 灵活性:Spring提供了将其与任何基于Java的技术集成的灵活性。
  • 控制反转:Spring将负责为我们的应用程序注入所需的依赖关系,不再需要我们手动搜索和为我们的应用程序注入所需的依赖关系。
  • 轻量级:Spring包含彼此之间具有最小依赖性的不同模块,这使其轻巧灵活。
  • 端到端开发:Spring框架为应用程序开发的所有方面提供模块,范围从依赖注入,持久性,缓存,业务,Web,REST,它是用于开发所有类型的基于Java的企业应用程序的生态系统。
  • 事务管理:框架为事务管理提供了抽象和透明层。这提供了一个可插拔的体系结构,我们可以在不更改核心系统的情况下注入不同的事务管理器。
  • AOP:它支持面向方面的编程(AOP)。AOP解决了 跨领域关注的问题。
  • 非侵入性:Spring不会强迫我们使用任何基于Spring的接口或扩展任何基于Spring的类以使用其功能,这些功能赋予了将其与其他技术结合使用的灵活性。例如,我们可以使用@Inject不是基于Spring的注解的注解来注入依赖项。
  • 异常处理:Spring Framework提供了多个选项,以更好,更灵活的方式处理异常。

Q3。什么是依赖注入?

依赖注入是一种技术,使我们可以使我们的项目松散耦合,并使用一些注解将它们定义为bean注入必需的依赖@Service,@Component,@Repository,@Controller或@Bean注解。

Q4。什么是Spring IOC容器?

Spring IoC容器是Spring框架的核心管理系统。它负责创建,配置和管理这些对象的生命周期。容器通过读取以XML配置或注解形式提供的配置元数据来获取有关实例化,配置和组装哪些对象的指令,能够表达组成应用程序的对象以及这些对象之间的丰富相互依赖关系。

Q5。Spring提供哪些不同的IOC容器?

Spring Framework提供以下两种类型的容器。

  • BeanFactory容器:这是Spring框架中可用的基本容器,支持依赖项注入(DI)。 org.springframework.beans 和 org.springframework.context 包是Spring框架IoC容器的基础。
  • ApplicationContext的容器:将ApplicationContext 增加更多的企业特定的功能。该 ApplicationContext 是对一个完整的超集 BeanFactory.

Q6。Spring支持哪些类型的依赖注入技术?

Spring支持三种类型的依赖注入

  • 基于Setter的依赖注入。
  • 基于构造函数的依赖注入。
  • 基于字段注入

Q7。Spring支持哪些bean作用域?

Spring支持低于7个作用域。

  • singleton
  • prototype
  • request
  • session
  • application
  • websocket
  • globalSession

Q8。解释Spring中的bean作用域?

Bean作用域定义了Bean的生命周期。

  • singleton(默认*)

为每个Spring IoC容器的单个对象实例限定单个bean定义。

  • prototype

为多个对象实例的单个bean定义范围。

  • request

将单个bean定义的范围限定为单个HTTP请求的生命周期;也就是说,每个HTTP请求都将在单个bean定义的后面创建一个自己的bean实例。仅在实现了 web-aware的Spring ApplicationContext中有效。

  • session

将单个bean定义的范围限定为HTTP Session的生命周期。仅在实现了 web-aware的Spring ApplicationContext中有效。

  • globalSession

将单个bean定义的作用域限定为全局HTTP会话的生命周期。通常,仅在portlet上下文中使用时才有效。仅在实现了 web-aware的Spring ApplicationContext中有效。

Q9。Spring中bean的默认范围是什么?我们如何在应用程序中更改默认范围?

默认情况下,Spring bean是单例作用域。要在我们的应用程序中更改默认的bean作用域,我们应该实现 BeanFactoryPostProcessor接口,并重写postProcessBeanFactory()方法来设置所需的bean作用域。

在上面的示例中,Spring容器将创建我们的SingletonBean类的2个实例。换句话说,Spring容器将创建我们的类的2个实例,并将其与“ id”绑定,并将其存储在单例缓存中。对ID为“ bean1”的系统的任何调用都会从ID为“ bean1”的单例缓存绑定中返回bean实例,而对id为“ bean2”的调用将返回ID为“ bean2”的实例绑定。

Q22。什么是Spring Bean?

构成应用程序基础并由Spring容器管理的对象称为Bean。Spring Bean是由Spring IoC容器加载的Java对象。如果通过Spring容器进行初始化,则任何普通的Java POJO都可以是Spring Bean。

Q23。什么是ApplicationContext?

ApplicationContext是提供应用程序配置的主要界面。这是ApplicationContext支持的功能列表。

  • 用于访问应用程序组件的Bean工厂方法。
  • 可以将事件发布给注册的侦听器
  • 从上下文继承。
  • 以通用方式加载文件资源的能力。
  • 在应用程序运行期间,它以只读模式运行。
  • Spring Framework提供了ApplicationContext接口的几种实现。

Q24。BeanFactory和ApplicationContext有什么区别?

两者都是Spring提供的IOC容器。BeanFacotory也被称为基本IOC,而ApplicationContext被称为高级IOC。ApplicationContext包括BeanFactory的所有功能并提供了额外的功能。以下是BeanFactory和ApplicationContext之间的一些区别。

BeanFactory使用惰性初始化方法,而ApplicationContext基于急切的初始化。

因为ApplicationContext包含BeanFactory的所有功能,所以他们推荐使用BeanFactory。

Q25。解释Spring bean的生命周期?

由Spring IOC基于XML或Java配置管理的Spring bean。由Spring IoC处理的Spring Bean的创建,管理和处置。在高级Spring Bean中,将经历不同的生命周期。

  • 需要进行初始化以使其进入可用状态。
  • 属性注入:Spring IoC容器注入bean的属性。
  • 发布初始化:Spring容器调用其postProcessAfterinitalization()方法。
  • 如果不再需要bean,则容器将删除它。

这是Spring Bean的完整生命周期

Q26。我们可以在一个项目中使用多个Spring配置文件吗?

是的,有很多方法可以做到这一点。我们可以在设置应用程序上下文时加载多个bean配置

ApplicationContext context = new ClassPathXmlApplicationContext。

Q28。什么是自动装配?Spring中有哪些不同的自动装配模式?

Spring容器可以通过扫描ApplicationContext自动关联参与的bean之间的关系,它有助于以下模式

  • no –(默认)没有自动装配。引用元素必须定义bean引用。
  • byName –按属性名称自动装配。Spring寻找与需要自动装配的属性同名的bean。
  • constructor –适用于构造函数参数。
  • byType –如果容器中恰好存在一个属性类型的bean,则可以自动连接属性

Q29。自动装配的局限性是什么?

Spring自动装配是一项功能强大的技术,具有许多优点,但是,该技术具有某些局限性

  • 使用构造函数和基于属性的设置指定的依赖关系将始终覆盖自动装配。我们无法自动连接简单属性,例如基元,字符串和类。
  • 如果我们在程序中定义了几个依赖项,这可能会造成混淆。
  • 自动装配没有显式精准装配,因为Spring容器在自动装配期间尝试匹配Bean。

Q30。什么是基于Spring Java的配置?

基于Spring Java的配置提供了类型安全的配置,也称为基于XML的配置的替代。

Q31。什么是基于Spring注解的配置?

Spring框架还提供了使用注解定义Bean自动装配的选项。我们可以使用@ Component,@ Repository,@ Service,@ Required和@Controller等注解在Spring应用程序中配置Bean。为此,我们需要在应用程序中添加以下条目。

只在定义它的相同应用程序上下文中查找关于bean的注解。这意味着,如果为DispatcherServlet放入WebApplicationContext,则仅检查控制器中的@Autowired bean,而不检查服务是否可用。

Q32。什么是 Spring events?描述标准的Spring事件?

Spring Events是Spring框架的一部分 。它使用事件在不同系统之间传达应用程序状态更改。Spring Framework提供了许多事件。

  • ContextRefreshedEvent –初始化或刷新ApplicationContext时发布的事件。当在ConfigurableApplicationContext接口上使用refresh()方法时,此选项也可用。
  • ContextStartedEvent –当ApplicationContext使用start()方法时发布的事件。
  • ContextStoppedEvent –使用ConfigurableApplicationContext接口上的stop()方法停止ApplicationContext时发布的事件。
  • ContextClosedEvent –当ApplicationContext关闭时引发的事件。

Q33。什么是Spring Security?

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的事实上的标准。Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。这是Spring安全性的一些最常见功能的列表。

  • 支持身份验证和授权。
  • 对CSRF,会话固定等的开箱即用支持。
  • OOTB与Spring MVC集成。
  • 支持集成外部认证系统。

Q34。什么是 @Autowired 批注?

@Autowired批注用于注入Spring依赖项。Spring Framework提供了以下bean自动装配。

  • 基于设置器的自动装配。
  • 基于构造函数的bean接线。
  • 基于字段或属性的自动装配。

Q35。什么是Spring DAO?

Spring中的DAO或数据访问对象提供了与JDBC,Hibernate和JPA一起使用的支持。DAO层是Spring框架的抽象,它使我们能够以一致的方式处理这些数据技术,而无需深入了解底层细节。

Q36。如何使用Spring 事务?

Spring为事务管理提供了一致的抽象。Spring提供了声明式和程序化事务(带有注解或通过使用面向方面的编程)。声明式事务管理最灵活,并且可以在大多数用例中使用。要使用这种方法,请使用@Transactional注解。我们还需要为数据源定义事务管理器。

以下是使用Spring Transactions的好处:

  • 跨不同事务API(例如JTA,JDBC,JPA等)的一致编程模型
  • 与Spring的数据访问抽象的出色集成。
  • 支持声明式和程序性事务

Q37。什么是Spring JdbcTemplate类以及如何使用它?

Spring JdbcTemplate类提供了有关JDBC操作的抽象,并有助于避免常见错误。以下是JdbcTemplate类执行的常见任务:

  • 处理JDBC连接。
  • 在ResultSet上工作。
  • 执行SQL查询。

如果您使用的是Spring Boot,请添加“ spring-boot-starter-jdbc”以启用使用自动配置的支持。对于非Spring启动项目,为DataSource添加一个简单的配置:

@Configurationpublic class CustomJdbcConfig { @Bean public DataSource mysqlDataSource通过添加额外的行为而无需添加或更改现有的类,从而为诸如日志记录,事务管理,数据验证等跨领域问题提供了透明的方法。提供了一种无侵入式增强程序编程方式。

关键字:  spring面试题汇集与答案  spring面试题及答案高级  spring面试知识点总结  spring面试题ioc和aop  spring面试八股文