Java开发框架和中间件面试题(2)

8.说说自己对Spring MVC的了解?

  MVC是一种设计模式,Spring MVC是一款很优秀的MVC框架。Spring MVC可以帮助我们进行更简洁的Web层开发,并且它天生与Spring框架集成。SpringMVC下我们一般把后端项目分为Service(处理业务),DAO层(数据库操作),Entity层(实体类),Controller层(控制层,返回数据给前台页面)。

Spring MVC的简单原理图如下:

9.SpringMVC的工作原理了解嘛?

流程说明:

1.客户端(浏览器)发送请求,直接请求到DispatcherServlet。

2.DispatcherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler。

3.解析到对应的Handler(也就是我们平常说的controller)

4.HandlerAdapter会根据Handler来调用真正的处理器来处理请求和执行相对应的业务逻辑。

5.处理器处理完业务后,会返回一个ModelAndView对象,Model是返回的数据对象,View是逻辑上的View。

6.ViewResolver会根据逻辑View去查找实际的View。

7.DispatcherServlet把返回的Model传给View(视图渲染)。

8.把View返回给请求者(浏览器)。

10.spring框架中用到了哪些设计模式?

    1.工厂设计模式:Spring使用工厂模式通过Bean Factory和ApplicationContext创建Bean对象。

    2.代理设计模式:SpringAOP功能的实现。

    3.单例设计模式:Spring中的bean默认都是单例的。

    4.模版方法模式:Spring中的jdbcTemplate,hibernateTemplate等以Template结尾的对数据库操作的类,他们就使用到了模版模式。

   5.包装器设计模式:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。

   6.观察者模式:Spring事件驱动模型就是观察者模式很经典的一个应用。

   7.适配器模式:SpringAOP的增强或者通知(Advice)使用到了适配器模式,SpringMvc也是 用到了适配器模式适配controller。

11.@Component和@Bean的区别是什么?

   11.1.作用对象不同。@component注解作用于类,而@Bean注解作用于方法。

   11.2.@Component注解通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中(我们可以使用@ComponentScan注解定义要扫描的路径)。@Bean注解通常是在标有该注解的方法中定义产生这个Bean,告诉Spring这是某个类的实例,当我需要用它的时候还给我。

  11.3.@Bean注解比@Component注解的自定义性更强,而且很多地方只能通过@Bean注解来注册Bean。比如当引用第三方库的类需要装配到Spring容器的时候,就只能通过@Bean注解来实现。

12.将一个类声明为Spring的Bean的注解有哪些?

    我们一般使用@Autowire注解去自动装配Bean。而想要把一个类标识为可以用@Autowired注解自动装配的Bean,可以采用以下的注解实现:

    1⃣️@Component注解。通用的注解,可标注任意类为Spring组件,如果一个Bean不知道属于哪一个层,可以使用@Component注解标注。

   2⃣️@Repository注解。对应持久层,即DAO层,主要用于数据库相关操作。

   3⃣️@Service注解。对应服务层,即Service层,主要涉及一些复杂的逻辑,需要用到DAO层注入。

  4⃣️@Controller注解。对应Spring MVC的控制层,即Controller层,主要用于接受用户请求并调用Service层方法返回数据给前端页面。

13.Spring事务管理的方式有几种?

   1⃣️编程式事务:在代码中硬编码(不推荐使用)。

   2⃣️声明式事务:在配置文件中配置(推荐使用),分为基于XML的声明式事务和基于注解的声明式事务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网上商城怎么做:五大关键步骤

在数字化浪潮中,开设网上商城已经成为商业发展的必然趋势。然而如何搭建一个功能齐全、用户体验优良的网上商城并非易事。以下为您介绍网上商城怎么做的五大关键步骤。 第一步,明确商业模式和定位 在开始搭建网上商城之前,需要清晰地定义你…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI+Vant 电影院订票管理系统 的设计与实现

一.项目介绍 基于SpringBootVue 电影院订票管理系统 分为前端和后端。 前端(用户): 登录后支持查看首页、电影、影院和我的信息 支持查看正在热映和即将上映的电影信息 支持购票(需选择影院座位)、看过(评论…

低代码平台

什么是低代码 低代码(Low-Code)是一种软件开发方法,旨在通过最小化手动编码的工作量,提高应用程序的开发效率。低代码平台通常提供可视化界面、预建组件、模板和自动化工具,以减少编码工作,使非专业开发人…

java使用面向对象实现图书管理系统

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

每日一练 | 华为认证真题练习Day152

1、树型网络拓扑实际上是一种层次化的星型机构,易于扩充网络规模,但是层级越高的节点故障导致的网络问题越严重。 A. True B. False 2、路由表中某条路由信息的Proto为Direct,则此路由的优先级一定为0 A. True B. False 3、路由器获得路由…

vue3 使用setup语法糖之后设置页面name方法

目录 vue2的设置方法 vue3的设置方法 1.vue3兼容vue2的写法 2.vue3没有使用setup语法糖 3.vue3的setup会自动生成name 4.使用插件 设置name的用处&#xff1a;页面缓存需要识别页面的唯一name属性才可以缓存 vue2的设置方法 <script>export default {name: "…

基本shell功能实现(exec系列程序替换函数练习)

shell 功能描述思路介绍1.实现常驻进程功能2.实现命令读取功能3. 实现命令解析功能4.实现子进程执行命令功能5.完善功能 补充内容让父进程运行内置命令实现子进程能够获得父进程的环境变量功能&#xff08;export命令&#xff09;shell实现重定向功能 全部代码如下&#xff1a;…

『 C++ 』二叉树进阶OJ题

文章目录 根据二叉树创建字符串 &#x1f996;&#x1f969; 题目描述&#x1f969; 解题思路&#x1f969; 代码 二叉树的层序遍历(分层遍历) &#x1f996;&#x1f969; 题目描述&#x1f969; 解题思路&#x1f969; 代码 二叉树的层序遍历(分层遍历)Ⅱ &#x1f996;&…

一篇文章带你了解SpringBoot目录结构

前言 SpringBoot是整合Spring技术栈的一站式框架&#xff0c;是简化Spring技术栈的快速开发脚手架&#xff0c;是一个能够快速构建生产级别的Spring应用的工具。SpringBoot是目前流行的微服务框架&#xff0c;倡导“约定优于配置”&#xff0c;简化Spring项目搭建及开发过程。…

shell(50) : 文件/文件夹不存在复制

把源文件夹里面不存在于目标文件夹的文件/文件夹复制到目标文件夹 # 源文件夹 yuan"/home/ly/nginx-module-vts-0.1.18" # 目标文件夹 mubiao"/home/ly/nginx2_test"echo "> ~~~~~~~~~~~~~~~~【start】~~~~~~~~~~~~~~~~ <" ysls $yuan|wc…

[Java 基础] Java 流操作简介

在Java编程中&#xff0c;流操作是非常常见和重要的操作之一。流操作可以用于处理数据的输入和输出&#xff0c;并且能够简化复杂的数据处理流程。Java提供了丰富的流操作类和方法&#xff0c;使得我们能够轻松地进行各种数据处理任务。 在这篇博客中&#xff0c;我们将介绍Jav…

速通Python基础语法--运算符篇

一、算术运算符 优先级&#xff1a; 除法的2个问题&#xff1a; 除零异常&#xff1a; 运行时才出现的错误&#xff0c;叫做“抛出异常” 如果程序运行过程中 抛出异常&#xff0c;程序就会直接终止&#xff0c;后面的代码不会执行。 除法的(不)截断问题&#xff1a; %取模/求…

宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问

文章目录 前言1.Mysql 服务安装2.创建数据库3.安装 cpolar3.2 创建 HTTP 隧道 4.远程连接5.固定 TCP 地址5.1 保留一个固定的公网 TCP 端口地址5.2 配置固定公网 TCP 端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了 Linux 命令行进行繁琐的配置,下面简单几步,通…

微信小程序使用--如何生成二维码

一、生成二维码 1.获取token 参照官方文档说明&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html 其中grant_type是写死的&#xff0c;appid和secret是注册小程序的时候获取的&#xff0c;然后会得到一个默认两小…

MyBatis-Plus全套笔记

一、MyBatis-Plus 1.简介 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 我们的愿景是成为 MyBatis 最好的搭档&…

c jpeg 理论霍夫曼 DC AC表,c程序实现正向逆向转换

此4张表是理论表&#xff0c;不是针对某张图片的特定表。如编码程序不统计生成某图片的专用霍夫曼表&#xff0c;应该也可用理论表代用编码。 1.亮度DC表 左边第一列是二进制位数&#xff0c;就是对此位数编码 中间一列是生成比特流的位数&#xff0c;右边是生成的比特流。 …

本地MinIO存储服务如何创建Buckets并实现公网访问上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统&#xff0c;它可以100%的运行在标准硬件上&#xff0c;即X86等…

Seata:打造行业首个分布式事务产品

作者&#xff1a;季敏&#xff0c;阿里云分布式事务产品负责人、Seata 开源项目创始人 微服务架构下数据一致性的挑战 微服务开发的痛点 在 2019 年&#xff0c;我们基于 Dubbo Ecosystem Meetup&#xff0c;收集了 2000 多份关于“在微服务架构&#xff0c;哪些核心问题是开…

SparkSQL的编程模型(DataFrame和DataSet)

1.2 SparkSQL的编程模型(DataFrame和DataSet) 1.2.1 编程模型简介 主要通过两种方式操作SparkSQL&#xff0c;一种就是SQL&#xff0c;另一种为DataFrame和Dataset。 SQL SQL不用多说&#xff0c;就和Hive操作一样&#xff0c;但是需要清楚一点的时候&#xff0c;SQL操作的是…

css学习笔记5

css学习笔记5 5.CSS列表属性6.CSS表格属性1.边框相关属性&#xff08;其他元素也能用&#xff09;&#xff1a;2.表格独有属性&#xff08;只有table标签才能使用&#xff09;&#xff1a; 7.CSS背景属性8.CSS鼠标属性 5.CSS列表属性 列表相关的属性&#xff0c;可以作用在ul、…