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 电影院订票管理系统 分为前端和后端。 前端(用户): 登录后支持查看首页、电影、影院和我的信息 支持查看正在热映和即将上映的电影信息 支持购票(需选择影院座位)、看过(评论…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MyBatis-Plus全套笔记

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

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

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

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

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

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

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

SparkSQL的编程模型(DataFrame和DataSet)

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

企业需要哪些数字化管理系统?

企业需要哪些数字化管理系统? ✅企业引进管理系统肯定是为了帮助整合和管理大量的数据,从而优化业务流程,提高工作效率和生产力。 ❌但是,如果各个系统之间不互通、无法互相关联数据的话,反而会增加工作量和时间成本…

【递归 回溯】LeetCode-226. 翻转二叉树

226. 翻转二叉树。 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出&#xf…

写给测试同学的福利 | 招募

一、简介 寻找空闲时间有能力进行有偿协助测试的人员,协助大厂产品进行测试优化产品工作 二、要求 1.安卓设备2.具备熟练使用手机的能力 三、你可以得到 1.优先体验相关产品新功能、了解产品走向2.任务有偿:每次任务5-30米 四、需要了解事项 1.嫌…

生于越南,“开源改变了我的人生!”

注:本文精选自《新程序员 007:大模型时代的开发者》,欢迎点击订购。 作者 | 王启隆 责编 | 唐小引 出品 | 《新程序员》编辑部 随着人工智能浪潮的席卷,开源不再仅仅是计算机领域的一个话题,而是成为推动技术创新…

让测试效率起飞的8款浏览器兼容性测试工具,你get了吗?

浏览器的兼容性问题,是指不同浏览器使用内核及所支持的 HTML 等网页语言标准不同,用户客户端的环境不同造成的显示效果不能达到理想效果。 对于用户而言,无论使用哪款浏览器,期望看到的效果是正常的统一的。市面上发布的浏览器版本…

JVS低代码和智能BI(自助式数据分析)12.19更新功能说明

低代码更新功能 新增: 1、表单组件:标题、分割线、按钮等非数据组件增加小程序端隐藏设置; 隐藏设置允许开发者对表单组件中的非数据组件进行隐藏,例如,可能只想展示表单的部分内容,或者希望在特定条件下显示或隐藏…