当前位置: 首页 > news >正文

Spring、SpringMVC、SpringBoot、Mybatis小结

Spring

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)

Spring框架的核心特性包括依赖注入(Dependency Injection ,DI)、面向切面编程(Aspect-Oriented Programming,AOP)和事务管理

核心模块:

  • Core Container:包含核心容器、Bean工厂、AOP、事件等模块。

  • Data Access/Integration:包含JDBC、ORM、OXM、JMS和事务管理等模块。

  • Web:包含Web MVC、Web Socket等模块。

  • Test:提供支持单元测试和集成测试的工具。

SpringMVC

SpringMVC是Spring框架的一部分,专门用来构建Web应用程序。

SpringMVC遵循模型-视图-控制器(Model-View-Controller,MVC)设计模式,将业务逻辑、数据展示和用户输入分离,提高了代码的可维护性和可扩展性。

主要组件:

  • DispatcherServlet:前端控制器,负责接收所有请求并分发给相应的处理器。

  • HandlerMapping:映射请求到具体的处理器。

  • Controller:处理具体的业务逻辑。

  • ModelAndView:封装模型数据和视图信息。

  • ViewResolver:解析视图名称,找到对应的视图实现。

  • View:负责渲染模型数据,生成最终的响应内容。

SpringBoot

SpringBoot是基于Spring框架的一个子项目,旨在简化新Spring应用的初始搭建以及开发过程。

SpringBoot通过“约定优于配置”(Convention over Configuration)的理念,极大地减少了配置的工作量,使得开发者可以快速启动和运行应用程序。

主要特性:

  • 自动配置:根据添加的依赖自动配置Spring应用。

  • 起步依赖:通过starter POMs简化Maven或Gradle配置。

  • 嵌入式服务器:内置Tomcat、Jetty或Undertow,无需部署WAR文件。

  • 生产就绪功能:提供健康检查、外部化配置、度量指标等生产环境所需的功能。

  • 命令行界面:提供CLI工具,方便快速编写和运行Spring应用。

Mybatis

Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。

Mybatis避免了几乎所有的JDBC代码手动设置参数以及获取结果集

Mybatis通过简单的xml或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects)映射成数据库中的记录。

主要特点:

  1. 简单易学

    • MyBatis 的 API 设计简洁,学习曲线平缓,适合初学者快速上手。

  2. 灵活的 SQL 映射

    • 支持动态 SQL,可以根据条件生成不同的 SQL 语句。

    • 支持存储过程调用,满足复杂业务需求。

  3. 强大的映射功能

    • 可以将查询结果自动映射到 Java 对象,支持复杂的结果映射。

    • 支持一对一、一对多等关系映射。

  4. 与数据库无关

    • 支持多种数据库,如 MySQL、Oracle、SQL Server 等。

  5. 良好的性能

    • 内置缓存机制,提高查询性能。

    • 支持延迟加载,减少不必要的数据加载。

小结

  • Spring:一个全面的企业级应用框架,提供依赖注入、AOP、事务管理等核心功能。

  • Spring Boot:基于Spring框架,通过自动配置和起步依赖简化应用开发,提供快速启动和生产就绪功能。

  • Spring MVC:Spring框架的一部分,专门用于构建Web应用程序,遵循MVC设计模式。

  • Mybatis:MyBatis 是一个轻量级的持久层框架,通过简单的 XML 或注解配置,可以灵活地执行 SQL 语句,并将结果自动映射到 Java 对象。

相关文章:

Spring、SpringMVC、SpringBoot、Mybatis小结

Spring Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架) Spring框架的核心特性包括依赖注入(Dependency Injection ,DI)、面向切面编程(Aspe…...

.NET 9 运行时中的新增功能

本文介绍了适用于 .NET 9 的 .NET 运行时中的新功能和性能改进。 文章目录 一、支持修剪的功能开关的属性模型二、UnsafeAccessorAttribute 支持泛型参数三、垃圾回收四、控制流实施技术.NET 安装搜索行为性能改进循环优化感应变量加宽Arm64 上的索引后寻址强度降低循环计数器可…...

Linux下安装mysql8.0版本

先确定我的下载安装的目录,安装文件是下载在 /opt/install 目录下面 (安装地址不同的话注意修改地址) 1.在线下载 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz2.解压 tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.t…...

kvm-dmesg:从宿主机窥探虚拟机内核dmesg日志

在虚拟化环境中,实时获取虚拟机内核日志对于系统管理员和开发者来说至关重要。传统的 dmesg 工具可以方便地查看本地系统的内核日志,但在KVM(基于内核的虚拟机)环境下,获取虚拟机内部的内核日志则复杂得多。为了简化这…...

植物明星大乱斗15

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 player.hplayer.cppparticle.hparticle.cpp player.h #pragma once #include <graphics.h> #include "vector2.h" #include "animation.h" #include "playerID.h" #include &…...

go-zero(三) 数据库操作

go-zero 数据库操作 在本篇文章中&#xff0c;我们将实现一个用户注册和登录的服务。我们将为此构建一个简单而高效的 API&#xff0c;包括请求参数和响应参数的定义。 一、Mysql连接 1. 创建数据库和表 在 MySQL 中创建名为 test_zero的数据库&#xff0c;并创建user 表 …...

SQL面试题——间隔连续问题

间隔连续问题 某游戏公司记录的用户每日登录数据如下 +----+----------+ | id| date| +----+----------+ |1001|2021-12-12| |1001|2021-12-13| |1001|2021-12-14| |1001|2021-12-16| |1001|2021-12-19| |1001|2021-12-20| |1002|2021-12-12| |1002|2021-12-16| |1002|…...

vim配置 --> 在创建的普通用户下

在目录/etc/ 下面&#xff0c;有个名为vimrc 的文件&#xff0c;这是系统中公共的vim配置文件对所有用户都有效 我们现在创建一个普通用户 dm 创建好以后&#xff0c;我们退出重新链接 再切换到普通用户下 再输入密码&#xff08;是不显示的&#xff0c;输入完后&#xff0c;…...

(计算机毕设)基于SpringBoot+Vue的房屋租赁系统的设计与实现

博主可接毕设设计&#xff01;&#xff01;&#xff01; 各种毕业设计源码只要是你有的题目我这里都有源码 摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互…...

【含开题报告+文档+PPT+源码】基于SpringBoot的医院药房管理系统

开题报告 在科技迅速发展的今天&#xff0c;各行各业都在积极寻求与现代技术的融合&#xff0c;以提升自身的运营效率和竞争力。医疗行业作为关乎国计民生的关键领域&#xff0c;其信息化建设的步伐尤为迅速。医院药房作为医疗体系中的核心环节&#xff0c;其管理效率和服务质…...

基于SpringBoot的“数码论坛系统设计与实现”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“数码论坛系统设计与实现”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统首页界面图 数码板…...

Linux-第2集-打包压缩 zip、tar WindowsLinux互传

欢迎来到Linux第2集&#xff0c;这一集我会非常详细的说明如何在Linux上进行打包压缩操作&#xff0c;以及解压解包 还有最最重要的压缩包的网络传输 毕竟打包压缩不是目的&#xff0c;把文件最终传到指定位置才是目的 由于打包压缩分开讲没有意义&#xff0c;并且它们俩本来…...

项目进度计划表:详细的甘特图的制作步骤

甘特图&#xff08;Gantt chart&#xff09;&#xff0c;又称为横道图、条状图&#xff08;Bar chart&#xff09;&#xff0c;是一种用于管理时间和任务活动的工具。 甘特图由亨利劳伦斯甘特&#xff08;Henry Laurence Gantt&#xff09;发明&#xff0c;是一种通过条状图来…...

Cargo Rust 的包管理器

Cargo->Rust 的包管理器 Cargi简介Cargo 的主要功能1. 创建项目2. 管理依赖3. 构建项目4. 运行项目5. 测试代码6. 检查代码7. 生成文档8. 发布和分享包 Cargo 的核心文件1. Cargo.toml2. Cargo.lock **Cargo 的生态系统** 常用命令总结Hello, Cargo! 示例 Cargi简介 Cargo …...

【Rust 编程语言工具】rustup-init.exe 安装与使用指南

rustup-init.exe 是用于安装和管理 Rust 编程语言工具链的 Windows 可执行文件。Rust 是一种系统级编程语言&#xff0c;旨在提供安全、并发和高性能的功能。rustup-init.exe 是官方提供的安装器&#xff0c;用于将 Rust 安装到 Windows 操作系统中&#xff0c;并配置相关环境。…...

集群聊天服务器(12)nginx负载均衡器

目录 负载均衡器nginx负载均衡器优势 如何解决集群聊天服务器跨服务器通信问题&#xff1f;nginx的TCP负载均衡配置nginx配置 负载均衡器 目前最多只能支持2w台客户机进行同时聊天 所以要引入集群&#xff0c;多服务器。 但是客户连哪一台服务器呢&#xff1f;客户并不知道哪一…...

数据挖掘英语及概念

分类 classify 上涨或跌 回归 regression 描述具体数值 分类模型评估 1.混淆&#xff08;误差&#xff09;矩阵 confusion matrix 2.ROC曲线 receiver operating characteristic curve 接收者操作特征曲线 3.AUC面积 area under curve ROC曲线下与坐标轴围成的面积&#x…...

springboot第82集:消息队列kafka,kafka-map

官网下载链接&#xff1a;https://kafka.[apache].org/downloads 我下载的是[Scala]2.12 - kafka_2.12-3.1.0.tgz kafka只需要解压下载的压缩包就行了&#xff0c;我这里解压的路径是D:\kafka_2.12-3.1.0&#xff0c;kafka的运行需要依赖zookeeper&#xff0c;当前版本已经内置…...

sql server查看当前正在执行的sql

#统计某类sql执行次数&#xff0c;并按总体cpu消耗时间降序排序 with a as ( select er.session_id,db_name(er.database_id) as DBNAME,sy.last_batch AS 最后执行时间, er.cpu_time ,er.total_elapsed_time/1000 as sum_elapsed_time_s, CAST(csql.text AS varchar(8000)) A…...

STM32设计学生宿舍监测控制系统-分享

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 本项目旨在利用STM32单片机为核心&#xff0c;结合传感器技术、无线通信技…...

解决Windows端口转发难题:PortProxyGUI的可视化管理方案

解决Windows端口转发难题&#xff1a;PortProxyGUI的可视化管理方案 【免费下载链接】PortProxyGUI A manager of netsh interface portproxy which is to evaluate TCP/IP port redirect on windows. 项目地址: https://gitcode.com/gh_mirrors/po/PortProxyGUI 在网络…...

JD-GUI完整使用指南:免费Java反编译工具的5大核心功能解析

JD-GUI完整使用指南&#xff1a;免费Java反编译工具的5大核心功能解析 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui Java开发者在日常工作中经常会遇到需要分析第三方库、调试未知代码或学习优秀项目…...

收藏!国内大厂大模型人才招聘真相,小白/程序员入门必看

在大模型技术飞速迭代的当下&#xff0c;国内各大互联网大厂对大模型高端人才的投入力度已然拉满&#xff0c;几乎每家头部企业都推出了针对顶尖人才的专项招聘计划&#xff0c;而这些计划的核心共性&#xff0c;就是“高薪兜底”搭配“高门槛筛选”&#xff0c;成为行业内最引…...

使用 Java 8 Lambda 和 Map 重构 If 语句

本文介绍了如何使用 Java 8 的 Lambda 表达式和 Map 优雅重构数据结构包括多个数据结构 if 句子的代码可以提高代码的可读性、可维护性和可扩展性。存储验证逻辑 Map 中&#xff0c;并使用 Lambda 表达式处理可以有效减少代码冗余&#xff0c;使其更容易扩展新的验证规则。在传…...

新手必看,在快马平台上手mcp,从零理解模型上下文协议的核心机制

今天想和大家分享一个特别适合新手理解MCP&#xff08;模型上下文协议&#xff09;的小项目。作为一个刚接触AI开发不久的人&#xff0c;我发现在InsCode(快马)平台上学习这些概念特别方便&#xff0c;尤其是它能把复杂的协议用实际代码展示出来。 MCP简单来说就是AI模型和外部…...

右键菜单瘦身术:如何用ContextMenuManager让Windows操作效率提升300%

右键菜单瘦身术&#xff1a;如何用ContextMenuManager让Windows操作效率提升300% 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单是我们日常操作…...

塑胶件防裂实践:3D检测亲测有效

行业痛点分析在精密制造领域&#xff0c;塑胶件开裂是长期困扰工程师的顽疾。传统检测手段&#xff0c;如卡尺、三坐标测量机&#xff08;CMM&#xff09;或二维影像测量&#xff0c;存在明显局限。它们难以对复杂曲面、内部应力集中区域进行非接触式、全尺寸的量化评估&#x…...

Realistic Vision V5.1 为SolidWorks模型渲染宣传图:工业设计可视化新流程

Realistic Vision V5.1 为SolidWorks模型渲染宣传图&#xff1a;工业设计可视化新流程 你是不是也遇到过这种情况&#xff1f;在SolidWorks里精心设计了一个产品模型&#xff0c;到了要出宣传图、给客户展示或者做方案汇报的时候&#xff0c;就头疼了。要么得花大半天甚至几天…...

【PyTorch 3.0终极性能开关】:静态图分布式训练源码级调优指南——绕过Autograd重写、规避TensorGuard冗余拷贝、精准控制Fusion边界

第一章&#xff1a;PyTorch 3.0静态图分布式训练架构概览PyTorch 3.0 引入了原生静态图&#xff08;Static Graph&#xff09;支持&#xff0c;通过 TorchDynamo Inductor 的编译栈实现高性能图优化&#xff0c;并与分布式训练深度协同。该架构将模型定义、图捕获、分区调度与…...

STM32串口通信实战:从零配置USART到数据收发(附代码)

STM32串口通信实战&#xff1a;从零配置USART到数据收发&#xff08;附代码&#xff09; 第一次接触STM32的串口通信时&#xff0c;我被各种术语搞得晕头转向——波特率、数据位、停止位、校验位...更别提那些看起来像天书一样的寄存器配置了。直到在项目中被逼着用USART和传感…...