Java面试八股文(2023最新)--Spring面试题

目录

1. 什么是Spring框架?

2. Spring,Spring MVC,Spring Boot之间的关系?

3. 使用Spring框架的好处是什么?

4. 核心容器(Application Context)应用上下文模块

5. BeanFactory-BeanFactory实现举例

6. IOC是什么?

7. IOC有什么用?优点是什么?

8. 什么是AOP?

9. 为什么叫面向切面编程?

10. 什么是SpringBeans?

11. 什么是依赖注入?有什么好处?

12. 有哪些不同类型的依赖注入实现方式?

13. Spring基于XML注入bean的几种方式

14. 怎么定义类的作用域

15. Spring支持哪几种bean的作用域?

16. Spring框架中的单例bean是线程安全的吗?

17. Spring中bean的生命周期

18. 什么是bean的自动装配?

19. SpringMVC的工作流程

20. 说出Spring或SpringMVC常用的注解,并解释。

21. 简述SpringMVC中如何返回Json数据?

22. Spring常用的设计模式?

23. Spring事务管理方式?

24. @Resource和AutoWired区别?

25. Transactional(rollbackFor = Exception.class)注解了解吗?


1. 什么是Spring框架?

Spring是一款开源的轻量级的Java开发框架,我们一般说spring框架指的是spring Framework,它是很多模块的集合,使用这些模块可以方便的协助我们开发,比如说Spring支持IOC(Inversion of Control:控制反转) 和AOP(Aspect - Oriented Programming:面向切面编程),可以很方便地对数据库进行访问,可以很方便地集成第三方组件(电子邮件,任务,调度,缓存等),对单元测试支持较好,支持RESTful 风格 java应用程序的开发

2. Spring,Spring MVC,Spring Boot之间的关系?

很多人对Spring,SpringMVC,SpringBoot三者傻傻分不清,简单介绍一下这三者:

  • Spring包含了多个功能模块,最重要的是Spring-Core(主要提供Ioc依赖注入)模块,Spring的其他模块(如SpringMVC)的功能实现基本都需要依赖于该模块。
  • SpringMVC是Spring中的一个很重要的模块,主要赋予Spring快速构建MVC架构的Web程序的能力。MVC是模型(model),视图(View),控制器(Controller),其核心思想是通过将业务逻辑,数据,显示分离来组织代码
  • SpringBoot只是简化了配置,如果你需要构建MVC架构的Web程序,还是需要使用SpringMVC作为MVC架构,只是SpringBoot简化了SpringMVC的很多配置,做到开箱即用!

3. 使用Spring框架的好处是什么?

轻量:Spring是轻量级的,基本的班级大约是2MB

控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。

面向切面编程AOP:Spring支持面向切面编程,把应用业务逻辑和系统服务分开

容器:Spring包含并管理应用中对象的生命周期和配置

MVC框架:Spring的WEB框架是一个精心设计的框架,而MVC是WEB的一个很好的替代品

事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务

异常管理:Spring提供方便的API把具体技术相关的异常转化为一致的unchecked异常

4. 核心容器(Application Context)应用上下文模块

这是基本的Spring模块,提供Spring框架的基础功能,BeanFactory是任何以Spring为基础的应用核心,Spring框架建立在此模块上,使Spring成为一个容器。

5. BeanFactory-BeanFactory实现举例

Bean工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从真正的应用代码分离,常用的BeanFactory实现是XMLBeanFactory类

6. IOC是什么?

IOC(Inversion Of Controller控制反转),是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理。IOC在其它语言中也有应用,并非Spring特有。IOC容器是Spring用来实现IOC的载体,IOC容器实际就是一个Map(key,value),Map中存放的是各种对象。

将对象之间的相互依赖关系交由IOC容器管理,并由IOC容器完成对象的注入。这样就可以很大程度上简化应用的开发,把应用从复杂的依赖关系解放出来。IOC容器就像是一个工厂,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来,在实际项目中一个Service类可能由几百上千个类作为他的底层,假如我们需要实例化这个Service,可能每次要搞清楚这个Service所有底层类的构造函数,这可能会把人逼疯。如果利用IOC,只需要配置好,在需要的地方引用就行了,大大增加了项目的可维护性且降低了开发难度

IOC负责创建对象,管理对象(通过依赖注入DI),装配对象,配置对象,并且管理这些对象的生命周期

7. IOC有什么用?优点是什么?

作用:

  • 管理对象的创建和依赖关系的维护,对象的创建并不是简单的事,在对象关系比较复杂时,如果依赖关系需要程序员维护,是很麻烦的
  • 解耦,由容器去维护具体的对象。
  • 托管了类的产生过程,比如我们需要在类产生过程中做一些处理,最直接的例子就是代理,如果有容器可以把这部分处理交给容器,应用程序则无序关心类是如何完成代理的

优点:

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

8. 什么是AOP?

面向切面编程&#x

你可能感兴趣的:(面试,java,spring,面试)