您的位置:首页 > 游戏 > 手游 > Java面试题·解释题·框架部分

Java面试题·解释题·框架部分

2024/12/26 3:11:32 来源:https://blog.csdn.net/howwickhappy/article/details/141787638  浏览:    关键词:Java面试题·解释题·框架部分

系列文章目录

Java面试题·解释题·总体概括
Java面试题·解释题·JavaSE部分
Java面试题·解释题·框架部分


文章目录

  • 系列文章目录
  • 前言
  • 一、MyBatis
    • 1. 请你介绍MyBatis框架
    • 2. MyBatis框架的核心思想是什么?
    • 3. MyBatis的核心配置文件中常用的子标签有哪些?
    • 4. mapper层代理开发模式所遵守的6个要求都有哪些?
    • 5. 请你介绍逆向工程
    • 6. 请你介绍动态sql
    • 7. MyBatis中关联查询如何实现?
    • 8. MyBatis中分页查询如何实现?
    • 9. MyBatis中延迟加载如何实现?
    • 10. MyBatis中查询缓存如何实现?
  • 二、Spring
    • 1. 请介绍Spring框架
    • 2. 请介绍IoC控制反转
    • 3. 请介绍DI依赖注入
    • 4. 请介绍AOP面向切面编程
    • 5. 请介绍TX事务传播策略
  • 三、Spring MVC
    • 1. 请介绍MVC设计模式
    • 2. 请介绍SpringMVC框架
    • 3. 请介绍参数绑定
    • 4. 请介绍映射请求
    • 5. 请介绍返回值类型
    • 6. 请介绍拦截器
    • 7. 请介绍处理流程
  • 四、Spring Boot
    • 1. 请介绍SpringBoot框架
    • 2. 什么叫做约定优于配置
    • 3. 请介绍SpringBoot启动器
    • 4. 请介绍SpringBoot配置文件
    • 5. 请介绍ThymeLeaf


前言

本文将介绍:
MyBatis、
Spring、
Spring MVC、
Spring Boot
本文主要介绍以上部分的面试题。


一、MyBatis

1. 请你介绍MyBatis框架

MyBatis原本是Apache的一个开源项目原叫ibatis,后改名为MyBatis迁移到GitHub上。
MyBatis 是一个基于Java的半自动化的 数据持久层(ORM)框架,它提供了一种简单且灵活的方式来映射Java对象与关系型数据库中的数据。
(使得开发人员可以通过编写简洁、可维护的SQL语句来操作数据库。)

2. MyBatis框架的核心思想是什么?

MyBatis的核心思想是将SQL语句与Java代码解耦,通过XML文件或者注解来定义SQL语句,使得代码与SQL语句的开发和维护更加灵活和可控。它提供了丰富的SQL映射配置选项,允许开发人员对SQL语句进行动态拼装,以适应不同的业务需求。

3. MyBatis的核心配置文件中常用的子标签有哪些?

属性文件加载:properties
作用:1、创建成员变量;2、引入外部属性文件;

配置全局设置:setting
作用:1、启用二级缓存;2、启用延迟加载;

类型别名:typeAliases
作用:给类型取别名,一般取entry实体类包下的和pojo包下的类的别名

数据库连接环境:environments
作用:设置多个数据库连接对象,可以选择使用哪个

配置映射文件:mappers
作用:配置映射文件的所在路径

4. mapper层代理开发模式所遵守的6个要求都有哪些?

①mapper.java接口名字跟mapper.xml映射文件的名字相同并且在同一个包下
②在mapper.xml映射文件中,namespace=“mapper.java接口在src下的地址”
③mapper.java接口中的方法名和mapper.xml中statement的id值一致。
④mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致
⑤mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致
⑥SqlMapConfig.xml 配置文件中,加载mapper接口
实现的效果:sql脱离java代码单独存于mapper映射文件里,利于后期的修改、维护,无需编写mapper.java接口的实现类

5. 请你介绍逆向工程

逆向工程的方法包括静态分析和动态分析。静态分析主要是通过反编译、反汇编、源代码审查等技术来分析软件或系统的代码结构和逻辑。动态分析则是通过运行软件或系统,并使用调试器或监控工具来跟踪程序执行流程、数据交互等,以获取更多的信息。

6. 请你介绍动态sql

在 MyBatis 中,动态 SQL 是一种允许在 SQL 语句中根据不同条件动态生成和拼接 SQL 片段的功能。MyBatis 提供了多种方式来实现动态 SQL,其中包括使用 (跟据test判断是否为null)、{、、}(类似switch-case语句)等标签进行条件判断和循环处理。

7. MyBatis中关联查询如何实现?

使用resultType和pojo类实现,pojo类写需要返回的数据。

8. MyBatis中分页查询如何实现?

我一般使用RowBounds插件来实现分页,在Mapper接口中创建RowBounds对象作为参数,然后给RowBounds的两个参数赋值就能实现分页,底层实现是给sql中limit后的两个属性赋值

9. MyBatis中延迟加载如何实现?

延迟加载类似单例模式的懒汉式加载,同样是按需加载,
优点是只有真正用到该对象时,才进行mapping操作,减少了数据库查询开销。
但缺点有两点:
1、多次连接数据库,增加数据库的压力
2、有些问题按需加载没法及时暴露出来

10. MyBatis中查询缓存如何实现?

缓存技术是一种“以空间换时间”的设计理念,是利用内存空间资源来提高数据检索速度的有效手段。
MyBatis提供一级缓存和二级缓存
一级缓存作用域为session,当此session刷新或关闭后,所有的缓存会被清除。
二级缓存的缓存域是以Mapper类或方法为单位的,不同的Mapper类或方法可以配置不同的缓存策略。缓存是基于命名空间(Namespace)进行隔离的。
需要注意的是,如果进行DML(增删改)操作,所有的缓存都会被清除。

二、Spring

1. 请介绍Spring框架

Spring全称Spring Framework,是一个优秀的开源的轻量级的企业应用开发框架,是为了解决企业应用程序开发复杂性而创建的。通过IoC和AOP解决方案创建出松耦合,易扩展,易维护的java应用系统。

2. 请介绍IoC控制反转

将对象的创建、依赖关系的管理和生命周期的控制交给一个容器来完成,而不是由开发人员手动进行管理。
详细解释:
传统的应用程序开发中,开发人员通常需要手动创建和管理对象,包括对象的创建、依赖关系的配置和对象的销毁等。这样的开发方式存在一些问题,如代码的耦合度高、对象的创建和销毁过程繁琐、难以维护和测试等。
而IoC的思想是将这些创建对象和管理依赖关系的责任转移到一个容器中,开发人员只需关注业务逻辑的实现。在IoC容器中,对象的创建和依赖关系的配置是通过配置文件(如XML文件)或注解来完成的。开发人员只需在配置文件或注解中描述对象之间的关系,容器会根据配置来创建对象并将它们组装起来。

3. 请介绍DI依赖注入

依赖注入是一种设计模式,用于解耦组件之间的依赖关系。在依赖注入中,一个组件不再负责创建、管理和查找它所依赖的其他组件,而是由外部容器负责将依赖的对象注入到组件中。依赖注入可以通过构造函数注入、Setter 方法注入或接口注入等方式实现,目的是将依赖的创建和管理交给容器,使组件专注于自身的功能实现。
自动注入是依赖注入的一种实现方式,在 Spring 框架中被广泛使用。自动注入通过使用@Autowired 注解来标记需要注入的依赖对象。在启动时,Spring 容器会扫描被注解标记的类和对象,自动创建、管理和注入依赖的对象。

4. 请介绍AOP面向切面编程

面向切面编程:程序开发过程中,一些业务代码的前后会出现非业务的横切代码,
通过aop技术,可以将横切代码提取单独存放再切面类,再通过通知类型+execution表达式再重新作用到业务代码上。到此完成aop操作,这些业务代码被叫做切入点。

5. 请介绍TX事务传播策略

事务是指将多个sql操作视为一个整体,一个失败,那么所有操作都会都会失败,事务具有原子性、一致性、隔离性、持久性。
事务的传播策略只出现在业务层,Spring 中常用的事务传播策略:
REQUIRED(默认):如果当前存在事务,则加入到当前事务中;如果当前没有事务,则创建一个新的事务。
REQUIRES_NEW:创建一个新的事务,并挂起当前事务。新的事务将独立于当前事务进行,如果新的事务失败则回滚,当前事务不受影响。
NESTED:如果当前存在事务,则创建一个嵌套事务,并在该嵌套事务中执行;如果当前没有事务,则行为类似于 REQUIRED。
SUPPORTS:如果当前存在事务,则加入到当前事务中;如果当前没有事务,则以非事务方式执行。
NOT_SUPPORTED:以非事务方式执行,如果当前存在事务,则挂起当前事务。
NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
MANDATORY:如果当前存在事务,则加入到当前事务中;如果当前没有事务,则抛出异常。

事务的传播策略只在方法调用过程中起作用,对于同一个方法内部的多个事务操作,传播策略不会生效,所有操作将在同一个事务中执行。

三、Spring MVC

1. 请介绍MVC设计模式

MVC(Model-View-Controller)是一种常见的软件设计模式,用于将应用程序的不同部分分离,以实现更好的代码组织、可维护性和可扩展性。MVC模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。
模型(Model):模型是应用程序的核心组件,负责处理数据(dao)和业务逻辑(service)。
视图(View):视图是用户界面的表示,负责展示模型中的数据给用户。
控制器(Controller):控制器是模型和视图之间的协调者,负责处理用户的输入和更新模型和视图之间的关系。
MVC设计模式将应用程序分为模型、视图和控制器三个组件,通过分离关注点和职责,提高代码的可维护性和可扩展性。模型负责数据和业务逻辑的处理,视图负责展示用户界面,控制器负责处理用户输入和协调模型与视图之间的关系。

2. 请介绍SpringMVC框架

SpringMVC是一种基于Java的MVC(Model-View-Controller)Web框架,它是Spring Framework框架的子框架。SpringMVC提供了一种灵活、高效的方式来开发Web应用程序,它将请求和响应的处理逻辑分离,并提供了丰富的功能和易于扩展的机制。

3. 请介绍参数绑定

自动参数绑定:SpringMVC根据请求参数的名称(key)和对象参数的属性名称进行匹配。如果请求参数的名称与Post类的属性名称匹配,则会将请求参数的值赋给对应的属性,SpringMVC会将请求参数的值转换为该对象类型。

4. 请介绍映射请求

在SpringMVC中,映射请求是指将请求URL映射到相应的处理方法上的过程。通过映射请求,可以将不同的请求路径与不同的处理方法进行关联,从而实现请求的路由和处理。可以通过在方法上添加@RequestMapping注解来指定请求的映射路径。

5. 请介绍返回值类型

同步返回值类型包括ModelAndView、String、void。
ModelAndView可以同时返回数据(addObject)和要跳转到的页面(setViewName)。
String只进行页面跳转,不带值:
字符串以"forward: "为开头,表示转发模式进行跳转;
以"redirect: "开头表示重定向模式进行跳转;
开头不写表示以转发方式进行跳转。
void进行页面跳转。

6. 请介绍拦截器

在SpringMVC中,拦截器是一种用于拦截请求的组件,它可以在请求处理的前后进行预处理和后处理操作。拦截器可以用于实现一些公共的功能,如日志记录、权限验证、请求参数处理等。
SpringMVC的拦截器是基于接口HandlerInterceptor实现的,并通过配置文件或注解来进行配置和注册。

7. 请介绍处理流程

在这里插入图片描述
1、首先用户发送请求到DispatcherServlet:前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;
2、DispatcherServlet到HandlerMapping:HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略;
3、DispatcherServlet到HandlerAdapter:HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;
4、HandlerAdapter到处理器:功能处理方法的调用HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);
5、DispatcherServlet到ViewResolver:ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;
6、DispatcherServlet到View:View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;
7、由DispatcherServlet返回响应给用户,到此一个流程结束。

四、Spring Boot

1. 请介绍SpringBoot框架

Spring Boot 是一个用于简化创建和开发基于 Spring 框架的应用程序的开发框架。它提供了一种快速、方便的方式来启动和配置一个基于 Spring 的应用程序。Spring Boot 基于约定优于配置的原则,通过自动配置和默认值,减少了开发人员的配置工作,使得开发过程更加简单和高效。

2. 什么叫做约定优于配置

一种软件开发原则,它强调在开发过程中使用约定(即默认行为)来减少配置的需要。这意味着在一些常见的场景中,开发人员可以通过遵循约定来自动完成一些配置,而无需显式地进行配置。

3. 请介绍SpringBoot启动器

在SpringBoot中,启动器是一种便捷的方式来集中管理项目的依赖、配置和辅助工具。启动器是一个Maven项目,它包含了一组预定义的依赖项,并提供了默认的配置和辅助工具,以简化SpringBoot应用程序的开发和部署。

4. 请介绍SpringBoot配置文件

在 Spring Boot 中,配置文件用于配置应用程序的属性和参数,它是一种常用的方式来对应用程序进行定制和配置。一般命名为application.yml。使用配置文件的好处是可以将应用程序的配置集中管理,方便进行修改和维护。

5. 请介绍ThymeLeaf

Thymeleaf是一个用于在基于Java的Web应用程序中实现服务器端模板渲染的现代化服务器端Java模板引擎。它的设计目标是提供一种优雅且功能丰富的模板引擎,可以与任何后端技术集成。
需要在html页面设置标签

<html  xmlns:th="http://www.thymeleaf.org">---
# 总结
以上是框架部分的解释题,感谢各位客官收看。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com