栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring boot 面试题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring boot 面试题

1.什么是Spring?

开源的轻量级的应用开发框架,它可以简化开发,解耦对象的依赖关系,集成其他框架。

2.Spring 有哪些核心功能?

        springIOC  SpringMVC  SpringAop

3.什么是SpringIOC? 有哪些依赖注入的方式?

        Springioc 就是控制反转,我们将对象的依赖关系交给Spring容器来进行管理。

        容器通过DI依赖注入的方式来使用创建的Bean对象

        构造器注入、Set方式注入、注解注入

4.注解注入有哪些方式?它们有什么区别?

        注解注入有两种方式,@Autowired和@Resource注解。

         @Autowired注解是Spring框架提供的注解,可以通过构造器注入,

        也可以通过set方法注入,是基于类型注入的(byType)。

        @Resource注解是JDK提供的一个注解,只是Spring框架也能识别它,它只通过set方式

        注入,是基于bean名称注入的

5.BeanFactory和FactoryBean有什么区别?

        BeanFactory是Spring当中的一个接口,Spring当中的容器都实现了这个接口,

        本质上我们可以认为他就是Spring容器接口。FatoryBean是工厂Bean,

        工厂 Bean 跟普通Bean不同, 其返回的对象不是指定类的实例, 而是该工厂 Bean 的               getObject() 方法所返回的对象。

6.Spring当中的BeanPostProcessor是什么?

        Spring为我们提供了一个BeanPostProcessor接口,

        该接口可以在bean初始化时让我们可以干预做一些操作。

        我们需要自己用一个类,实现该接口,接口中会有两个方法,

        在bean初始化前做一些事情,在类初始化后做一些事情,加入具体的逻辑即可。

7.什么是Spring中的Aware接口?

        在实际的开发中,我们却经常要用到Spring容器本身的功能或资源,

        Spring提供了一系列Aware接口来实现具体功能。只要我们的bean实现了具体的Aware接口,

        并实现其方法,Spring容器就会把具体的资源传给我们。

        

        BeanNameAware  获取容器中 Bean 的名称  

         BeanFactoryAware 获取当前 BeanFactory ,这样可以调用容器的服务  

        ApplicationContextAware 获取当前Spring容器

8.Spring是如何解决循环依赖的?

        Spring创建一个Bean对象的基本步骤是,如果有一个类A中,依赖了类B。先创建A,

                再创建A的时候发现需要创建B,这时会停下来,去创建B,

                B创建完毕后,再继续创建A,并把B注入到A中。循环依赖指的是,

                一个对象A中依赖了对象B,对象B又依赖了对象A,那这样就会出问题了。

                整个IOC容器解决循环依赖,用到的几个重要成员:

                singletonObjects:一级缓存,存放完全初始化好的Bean的集合,

                从这个集合中取 出 来 的Bean可以立马返回

                earlySingletonObjects:二级缓存,存放创建好但没有初始化属性的Bean的集合,

                它用来解决循环依赖

9.Spring中的bean是线程安全的吗?那要怎么解决呢?

当多个线程操作同一个对象的时候,对这个对象的非静态成员变量的写操作会存在线程安全问题。我们可以通过@Scope("prototype")注解来指定创建模式为多例。也可以通过ThreadLocal来解决这个问题(了解)。

10.SpringMVC中有几大组件?分别是哪些呢?它们如何交互工作的?

SpringMVC有5大组件。

分别是DispatcherServlet(前端控制器)、HandlerMapping(请求派发控制器)、Controller(请求处理控制器)、ModelAndView(数据和视图名)、ViewResolver(视图解析器)。

1.客户端发送请求,直接请求到DispatcherServlet。

2.DispatcherServlet根据请求信息调用HandlerMapping,解析请求转发到Controller中。

3.处理完业务逻辑后,会返回一个ModelAndView对象。

4.ViewResolver会根据逻辑View进行视图解析。

5.DispatcherServlet返回给客户端进行视图渲染。

11.转发和重定向有什么区别?

转发:一次请求,浏览器地址不变,可以通用共享数据,只能转发到系统内部

重定向:两次请求,浏览器地址改变,无法通用共享数据,可以重定向到内部或者外部。

12.什么是SpringBoot?

SpringBoot是用来简化Spring应用的初始搭建以及开发过程的全新框架,该框架使用特定方式来进行配置,从而使开发人员不再需要定义样板化的配置。

SpringBoot具有如下特性:

1.创建独立的Spring应用程序,通过mian方法进行运行。

2.内置嵌入的Tomcat,可选择部署jar文件,也可部署war文件。

3.简化Maven配置,SpringBoot的父工程帮我们管理了大量的maven依赖,我们可以不用关系版本号,只需要继承引用即可。

4.自动配置Spring,根据核心application.properties配置文件+代码注解使用,就能自动配置Spring,无需要再繁琐的去配置xml文件。

13.什么是SpringAOP? 那什么是切面编程

AOP是面向切面的编程。切面编程是将原有业务中共通的处理逻辑抽离出来,进行独立封装,然后通过配置作用到原有传统的业务处理方法上。例如我们常常用来做事务处理,日志处理,异常处理,权限处理等。

14.  切面编程的三大要素是什么?

切面:就是源代码的通用功能(日志、权限、异常。。)

切入点:对那些方法进行切入

通知:在方法的什么位置切入

扩充:springAOP有有三种配置切面的方式

1.通过xml+表达式进行配置

2.通过Aspect注解+表达式进行配置

3.通过Aspect注解+ 自动注解配置

15.SpringAOP的底层原理是什么?Spring当中的动态代理有哪         些实现方式?你能分别说说他们的机制吗?

SpringAOP的实现原理是采用动态代理技术。Spring采用两种方法来实现动态代理,分别是JDK动态代理技术和CGLIB动态代理技术。JDK动态代理技术要求我们实现InvocationHandler接口,当我们的代理类调用方法时,会被其invoke方法拦截,进行方法的增强,但它必须基于接口来实现。CGLIB底层采用的是字节码技术来生成代理类,也是在我们调用代理类方法时,被拦截,进行方法的增强,但它可以不基于接口来实现,而采用继承的方式来实现。

16.什么是事务?事务有哪些特征?

事务通常用于数据库领域,事务是指对数据库进行读或写的一组操作序列,要么

都执行,要么都不执行,不允许只执行一部分的情况;事务的操作结果只有两种,一种是提交成功,一种是提交不成功恢复到操作之前的状态。

事务的特征包含ACID,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/319053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号