spring常见面试题

1、spring、springmvc、springBoot之间有什么区别和联系?

spring是一个一站式的轻量级java开发框架核心是控制反转和面向切面

springmvc是spring基础之上的mvc框架,主要处理web路径映射和视图渲染,属于spring框架中web层开发的一部分

springBoot框架对spring框架进行了配置的简化,相对于springmvc来说,更专注于开发微服务后端接口,不开发前端视图

详细介绍三者:

spring、springmvc、springboot框架的介绍-CSDN博客

2、 BeanFactory和FactoryBean的区别?

BeanFactory是一个对象工厂,IOC的顶级接口,核心是管理和获取bean对象

FactoryBean是一个bean生成工具,是用来获取一种类型对象的bean,它是构造bean实例的一种方式

3、springBean的生命周期?

创建实例--属性注入--初始化--使用--销毁

4、spring MVC的工作原理?

1、客户端向Http发送请求

2、请求被前端控制器捕获,

3、前端控制器根据请求中的url来找到对应的处理器映射

4、处理器映射将请求映射到一个具体的处理器上,也就是controller中的某个方法

5、处理器业务逻辑被执行,返回ModelAndView

6、ModelAndView包含处理结果和视图名称,并调用viewResolver解析成真正的视图

7、试图将Model数据渲染成html,并返回给客户端

5、springBean的作用域?

singleton:单例模式,在整个项目中,对象只被创建了一次,线程不安全

prototype:原型模式,使用一次创建一次

session:一次会话一个实例

request:一次请求一个实例

Global Session:在一个全局的Http Session中,容器会返回该bean的同一个实例,仅在使用protlet context时有效

6、spring由哪些模块组成?

spring core:框架的基本组成部分,包含控制反转和依赖注入

spring beans:beanFactory是工厂模式的一种体现,将管理对象称之为bean

spring context:构建与core封装包基础之上的context封装包

spring ORM:spring框架插入若千个ORM框架,从而提供了ORM的对象关系工具

spring Aop:面向切面,作为面向对象的一种补充,自定义拦截点、切点

spring jdbc:提供了jdbc的抽象层,消除了繁琐的jdbc编码,简化了jdbc

spring web:web开发集成特性

spring Test:提供了测试,支持单元测试和集成测试

7、依赖注入的方式?

支持四种注入方式

分别是 setter方法注入、构造器注入、静态工厂、实例工厂

spring常用的是setter方法注入、构造器注入

8、spring中单例bean是线程安全的吗?

单例bean是线程不安全的,是所有线程所共享的,如果同时有多个线程访问bean对象时,可能会出现异常情况

9、什么是IOC容器

控制反转,是一种设计模式,将对象的创建、配置、管理交给spring容器来完成,ioc容器实际上就是一个Map,存储的就是各种对象

10、什么是依赖注入

DI是一种设计模式,通过在对象之间注入依赖关系,而不是在对象内部创建它们来解耦对象之间的依赖关系,依赖注入就是将IOC中存储的对象取出并使用的形式

11、spring框架都有哪些特点

轻量级:一个完整的spring框架可以放在只有1M的jar包

控制反转:通过控制反转技术促进低耦合

面向切面:作为面向对象的一种补充,并且把应用的业务逻辑和系统服务分开

容器:包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器

框架集合:可以将简单的组件配置,组合成为复杂的应用

12、你对springmvc了解吗?

Model1时代:几乎全用jsp页面,只用少量的servlet

Model2时代:java bean+jsp+servlet

springMvc时代:dao层,controller层,entity层,service层

springBoot框架的运行原理:

SpringBoot运行原理(超详细!!!面试必考)-CSDN博客

下面同样也是面试题:

java面试题-CSDN博客

关于java常见的面试题(内附26道)上-CSDN博客

相关推荐
闲晨几秒前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
测开小菜鸟2 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
Ai 编码助手2 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
P.H. Infinity2 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天3 小时前
java的threadlocal为何内存泄漏
java
陈燚_重生之又为程序员3 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle3 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻3 小时前
MySQL排序查询
数据库·mysql
萧鼎3 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^3 小时前
数据库连接池的创建
java·开发语言·数据库