Q1、什么是Spring Framework?

Spring是Java企业版应用程序开发中使用最广泛的框架.Spring的核心功能可用于开发任何Java应用程序。

我们可以使用它的扩展来在Java EE平台上构建各种Web应用程序,或者我们可以在简单的独立应用程序中使用它的依赖注入。

Q2、使用Spring有什么好处?

Spring旨在简化Java EE开发。以下是使用它的优点:

  • 轻量级: 在开发中使用框架开销很小
  • 控制反转(IoC): Spring容器负责处理各种对象的依赖关系,而不是创建或查找依赖对象
  • 面向切面编程(AOP): Spring支持AOP将业务逻辑与系统服务分开
  • IoC容器: 它管理Spring Bean生命周期和项目特定配置
  • MVC框架: 用于创建Web应用程序或RESTful Web服务,能够返回XML / JSON响应
  • 事务管理: 通过使用Java注释或Spring Bean XML配置文件减少JDBC操作
  • 异常处理: Spring提供了一个方便的API,用于将特定于技术的异常转换为未经检查的异常

Q3、你知道哪些Spring子项目?简要描述一下。

  • Core - 提供框架基本部分的关键模块,如IoC或DI
  • JDBC - 此模块启用JDBC抽象层,无需对特定供应商数据库执行JDBC编码
  • ORM集成 - 为流行的对象关系映射API提供集成层,例如JPA,JDO和Hibernate
  • Web - 面向Web的集成模块,提供多部分文件上传,Servlet侦听器和面向Web的应用程序上下文功能
  • MVC框架 - 实现模型视图控制器设计模式的Web模块
  • AOP模块 - 面向切面的编程实现,允许定义干净的方法 - 拦截器和切入点

Q4、什么是依赖注入?

依赖注入是控制反转(IoC)的一个方面,它是一个通用概念,表明您不是手动创建对象,而是描述应如何创建它们。如果需要,IoC容器将实例化所需的类。

Q5、我们如何在Spring中注入Bean?

存在一些不同的选择:

  • Setter注入
  • 构造函数注入
  • 变量注入

可以使用XML文件或注释完成配置。

Q6、注入Bean的最佳方法是什么?为什么?

建议的方法是使用构造函数参数用于强制依赖项,将setter用于可选依赖项。构造函数注入允许将值注入不可变字段并使测试更容易。

Q7、BeanFactory 和 ApplicationContext 的有什么区别?

BeanFactory 是一个表示提供和管理bean实例的容器的接口。默认实现在调用 getBean() 时实例化bean 。

ApplicationContext 是一个接口,表示容纳应用程序中所有信息,元数据和bean的容器。它还扩展了 BeanFactory 接口,但默认实现在应用程序启动时立马实例化bean。可以为单个bean覆盖此行为。

Q8、什么是Spring Bean?

Spring Bean是由Spring IoC容器初始化的Java对象。

Q9、Spring框架中的默认Bean范围是什么?

默认情况下,Spring Bean初始化为单例 。

Q10、如何定义bean的范围?

要设置Spring Bean的范围,我们可以在XML配置文件中使用 Scope 注释或“Scope”属性。

有五个支持的范围:

  • singleton
  • prototype
  • request
  • session
  • global-session

Q11、单例Bean是线程安全的吗?

不,单例bean不是线程安全的,因为线程安全是关于执行的,而单例是一种专注于创建的设计模式。线程安全仅取决于bean实现本身。

Q12、SpringBean生命周期是什么样的?

首先,需要基于Java或XML bean定义来实例化Spring bean。可能还需要执行一些初始化以使其进入可用状态。之后,当不再需要bean时,它将从IoC容器中删除。

所有初始化方法的整个循环显示在下图上:

Q13、什么是Spring Java注解配置?

这是以类型安全的方式配置基于Spring的应用程序的方法之一。它是基于XML的配置的替代方案。

Q14、我们可以在一个项目中拥有多个Spring配置文件吗?

可以,在大型项目中,建议使用多个Spring配置以提高可维护性和模块性。

您可以加载多个Java注解的配置:

@Configuration
@Import({MainConfig.class, SchedulerConfig.class})
public class AppConfig {

或者加载一个包含所有其他配置的XML文件:

ApplicationContext context = new ClassPathXmlApplicationContext("spring-all.xml");

在XML文件中你也可以包含其它配置文件:

<import resource="main.xml"/>
<import resource="scheduler.xml"/>

Q15、什么是Spring Security?

Spring Security是Spring框架的一个独立模块,专注于在Java应用程序中提供身份验证和授权方法。它还会处理大多数常见的安全漏洞,例如CSRF攻击。

要在Web应用程序中使用Spring Security,您可以开始使用简单的注解:@EnableWebSecurity。

Q16、什么是Spring Boot?

Spring Boot是一个项目,它提供了一组预先配置的框架,以减少用户的配置,以便您可以使用最少量的代码启动并运行Spring应用程序。

Q17、列举一些Spring Framework中使用的设计模式?

  • 单例模式: 单例范围的bean
  • 工厂模式: Bean工厂类
  • 原型模式: 原型范围的bean
  • 适配器模式: Spring Web和Spring MVC
  • 代理模式: 面向Spring Aspect的编程支持
  • 模板方法模式: JdbcTemplate、HibernateTemplate 等。
  • 前端控制器模式: Spring MVC DispatcherServlet
  • 数据访问对象: Spring DAO支持
  • 模型视图控制器: Spring MVC

“不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!


关注公众号:「Java 知己」,每天更新Java知识哦,期待你的到来!

  • 发送「1024」,免费领取 30 本经典编程书籍。
  • 发送「Group」,与 10 万程序员一起进步。
  • 发送「面试」,领取BATJ面试资料、面试视频攻略。
  • 发送「JavaEE 实战」,领取《JavaEE 实战》系列视频教程。
  • 发送「玩转算法」,领取《玩转算法》系列视频教程。

17个经典的Spring面试问答的更多相关文章

  1. 25个经典的Spring面试问答

    1.什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spring帮助开发者解决了开发中基础性的问题, ...

  2. Spring学习总结(8)——25个经典的Spring面试问答

    1.什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spring帮助开发者解决了开发中基础性的问题, ...

  3. Spring面试问答Top 25

    欢迎大家向我推荐你在面试过程中遇到关于Spring的问题. 我会把大家推荐的问题加入到以下的Spring经常使用面试题清单中供大家參考. 问题清单: 什么是Spring框架?Spring框架有哪些主要 ...

  4. Spring面试问答

    1.什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spring帮助开发者解决了开发中基础性的问题, ...

  5. Spring面试问答25题

    1.什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spring帮助开发者解决了开发中基础性的问题, ...

  6. 17、JAVA多线程和并发基础面试问答

    JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...

  7. 电话面试问答Top 50 --[伯乐在线]

    今年是2015年,在过去几年中,电面(电话面试)是筛选程序员职位候选人的最流行的方式.它让雇佣双方很容易互相了解对方,候选人不需要去未来雇主的所在地,面试官也不用做额外的安排.这是我介绍程序员面试问题 ...

  8. JAVA多线程和并发基础面试问答(转载)

    JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...

  9. [转] JAVA多线程和并发基础面试问答

    JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...

随机推荐

  1. <深度学习>TensorBoard的demo

    import tensorflow.compat.v1 as tf import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1& ...

  2. Object::connect: No such slot xxx 解决方法

    在所有代码和槽函数全部写好之后,进行编译时竟然报 No such slot xxxx,奇怪 Starting E:\01_project\03_C++\key\debug\key.exe... Obj ...

  3. P3747 [六省联考2017]相逢是问候

    题意 如果对一个数操作\(k\)次,那么这个数会变成\(c^{c^{...^{a_i}}}\),其中\(c\)有\(k\)个. 根据P4139 上帝与集合的正确用法这道题,我们可以知道一个数不断变为自 ...

  4. 【RTOS】为H7配套的uCOS-III模板也是可以用于MDK AC6的,提供个模板

    AC6模板 链接:https://pan.baidu.com/s/1_4z_Lg51jMT87RrRM6Qs3g   提取码:2gns 原始的这个模板直接修改为AC6: 编译有几十处警告,修改下面三个 ...

  5. JS获取url请求参数

    JS获取url请求参数,代码如下: // 获取url请求参数 function getQueryParams() { var query = location.search.substring(1) ...

  6. Linux下MySQL数据库的my.cnf配置文件,解决中文乱码问题

    系统 CentOS 7.7 MySQL - 5.7.28文件放置目录:/etc/文件权限:644解决问题:存储中文数据乱码 # For advice on how to change settings ...

  7. 1025 PAT Ranking 双重排序

    Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhe ...

  8. [Spring cloud 一步步实现广告系统] 6. Service实现&Zuul配置&Test

    DAO层设计实现 这里我们使用Spring DATA JPA来实现数据库操作,当然大家也可以使用Mybatis,都是一样的,我们依然以用户表操作为例: /** * AdUserRepository f ...

  9. [Java 开发利器Lombok] 常用注解演示

    在以往的对象模型编码时,我们需要写一大堆的get/set以及不同的构造函数等.Lombok为我们提供了一个非常好的插件形式. 在大多数的项目中,只需要使用到以下集中Annotation就足够了,如果需 ...

  10. C#以对象为成员的例子

    using System; using System.Collections.Generic; using System.Text; namespace test { class Program { ...