SpringBoot--springboot简述及快速入门

news2025/7/18 2:32:42

spring Boot是spring提供的一个子项目,用于快速构建spring应用程序

传统方式:

image-20250511214728212

在众多子项目中,spring framework项目为核心子项目,提供了核心的功能,其他的子项目都需要依赖于spring framework,在我们实际开发中,我们可以根据不同的业务需求来选择不同的子项目,通过spring framework子项目把他们整合起来,从而构建一个spring应用程序。

随着我们的业务需求越来越复杂,功能越来越强大,构建spring程序就会越来越麻烦,因此spring官方给我们提供了spring boot专门应用于spring项目的构建,

image-20250511215050703

传统方式构建spring应用程序问题

  • 导入依赖繁琐

例如,我们在编写spring程序时,需要导入相关依赖,且是手动导入,而且这些依赖的jar包可能会造成冲突,jar包冲突的问题也需要去手动解决。非常麻烦。

  • 项目配置繁琐

还需要些很多的配置文件,例如web.xml,springMVC.xml,applicationContext.xml等等

applicationContext.xml是spring项目中的核心配置文件,需要在其中声明配置大量的Bean对象,比如数据库连接池(DataSource),SQLSessionFactorytransactionManagermapperScannerConfigue(扫描映射文件配置)等等不止,这还只是整合mybatis需要的声明配置,随着项目功能越来越强大,需要配置的bean对象也越来越多,越来越繁琐。

springBoot特性

  • 起步依赖(解决导入依赖繁琐的问题)

本质上就是一个Maven坐标,整合了完成一个功能需要的所有坐标。

例如,我们要开发一个web应用,需要引入大量依赖,例如spring-core,spring-web,spring-context,spring-aop等等,在传统方式构建时,需要手动导入,非常繁琐。

而springboot提供了一个起步依赖,在spring-boot-starter-web这个坐标,它将完成web开发需要的所有的坐标全部整合起来放在spring-boot-starter-web这个坐标里,接下来我们在实际开发中,在需要使用web开发时就不需要导入以前如此多的依赖了,只需要引入springboot提供的起步依赖的坐标即可。这里主要借助了Maven传递依赖的特性。

  • 自动配置(解决配置繁琐的问题)

遵循约定大于配置的原则,在boot程序启动后,一些bean对象会自动注入到IOC容器中,不需要手动声明,简化开发。

在传统项目创建中,spring整合MyBatis除了要导入大量依赖,还要在声明配置Bean对象(SQLSessionFactoryBean、MapperScannerCofigurer)。

而在springboot项目中,只需要引入MyBatis的起步依赖,在其内部已经自动声明需要的Bean对象,不需要在配置文件中手动的声明了。

起步依赖+自动配置 = 快速构建spring应用程序

  • 其它特性

    • 内嵌的Tomcat、Jetty(无需部署WAR文件)

    以前开发的web应用程序需要打成war包,再去部署到我们安转的Tomcat,Jetty这样的服务器软件上才能被浏览器访问。而springboot提供了内嵌的Tomcat,即使用springboot构建的应用程序,启动时内部的Tomcat会跟着启动,并且将当前项目里的资源自动部署好。

    • 外部化配置

    传统项目中的配置文件都在工程里,当前工程开发完毕后,打成jar包部署,但是如果一些配置发生了变化,需要在当前工程的配置文件里修改,修改完毕后重新打包并部署。比较繁琐

    springboot提供了外部化的配置,将所有的配置文件都放在了外部的MATA-INF/spring.factories中,如果项目部署完毕之后,想要修改配置,只需要去修改项目外边的配置文件即可,修改完毕后不需要重新编译打包部署,可以直接重启即可。

    • 不需要XML配置(使用properties/yml配置文件)

    传统项目中的XML配置文件写起来十分繁琐复杂,

    在springboot项目中采用properties配置文件(键值对形式)或者yaml/yml配置文件()来编写配置文件。十分简便。

我们可以尝试创建一个springboot项目

springBoot入门

需求:使用springboot开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串“hello world”

实现过程:

  • 创建Maven工程

  • 导入spring-boot-starter-web起步依赖

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
  • 编写Controller

 package com.lyc.firstdemo.controller;
 ​
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 ​
 @RestController
 public class IndexController {
     @RequestMapping("/hello")
     public String index(){
         return "hello world";
     }
 }
  • 提供启动类

image-20250512201529622

测试:

image-20250512202259184

测试成功,我们发现直接创建springboot项目的话,大多数需要的操作系统中已经自己完成了,,我们只需要创建Controller来控制网页,以及导入web的起步依赖。其他的操作已经在底层自动完成了。由此看来,springboot项目确实十分便捷。

注意事项:在springboot项目中打包方式不需要使用war包,因为springboot项目中内嵌了Tomcat,打成jar包就行。

我们已经创建了一个springboot项目并成功测试,并发现springboot项目与普通的Maven项目好像区别不是很多,让我们来尝试利用Maven项目来达到springboot项目中的效果。

手动创建springboot项目

  • 创建Maven工程

  • 引入父依赖以及spring-boot-starter-web起步依赖

 <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>3.4.5</version>
 </parent>
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
  • 提供启动类

 package com.lyc;
 ​
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.ConfigurableApplicationContext;
 ​
 @SpringBootApplication //注解表示为springboot项目的启动类
 public class SpringBootCreateManualApplication {
     public static void main(String[] args) {
         SpringApplication.run(SpringBootCreateManualApplication.class, args);//调用run方法启动项目
     }
 ​
 }
  • 提供controller类

 package com.lyc.controller;
 ​
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 ​
 @RestController
 public class IndexController {
     @RequestMapping("/hello")
     public String index(){
         return "hello world----------------niuhbi-----------";
     }
 }
  • 在浏览器中测试:

image-20250512203822477

测试成功。

希望让大家对springboot项目有个大概的了解。谢谢大家!

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

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

相关文章

vscode_python远程调试_pathMappings配置说明

1.使用说明 vscode python 远程调试pathMappings 配置 launch.json "pathMappings": [{"localRoot": "本地代码目录","remoteRoot": "远程代码目录" # 注意不是运行目录, 是远程代码的目录}],2.测试验证 测试目的: 远程代…

遨游5G-A防爆手机:赋能工业通信更快、更安全

在工业数字化转型与5G-A商用进程加速的双重驱动下&#xff0c;中国防爆手机市场正迎来历史性发展机遇。作为“危、急、特”场景通信解决方案服务商&#xff0c;遨游通讯深刻洞察到&#xff1a;当5G-A网络以超高速率、海量连接和毫秒级时延重塑行业生态时&#xff0c;防爆手机这…

Profibus DP主站与Modbus RTU/TCP网关与海仕达变频器轻松实现数据交互

Profibus DP主站与Modbus RTU/TCP网关与海仕达变频器轻松实现数据交互 Profibus DP主站转Modbus RTU/TCP&#xff08;XD-MDPBm20&#xff09;网关在Profibus总线侧实现主站功能&#xff0c;在Modbus串口侧实现从站功能。可将ProfibusDP协议的设备&#xff08;如&#xff1a;海…

「华为」人形机器人赛道投资首秀!

温馨提示&#xff1a;运营团队2025年最新原创报告&#xff08;共210页&#xff09; —— 正文&#xff1a; 近日&#xff0c;【华为】完成具身智能赛道投资首秀&#xff0c;继续加码人形机器人赛道布局。 2025年3月31日&#xff0c;具身智能机器人头部创企【千寻智能&#x…

格雷希尔G10和G15系列自动化快速密封连接器,适用于哪些管件的密封,以及它们相关的特性有哪些?

格雷希尔G10和G15系列快速密封连接器&#xff0c;用于自动化和半自动化过程中的外部或内部密封&#xff0c;通过使用气压驱动来挤压内部的密封圈&#xff0c;创造一个适用于各种管件的无泄漏密封连接&#xff0c;连接器内部的弹性密封圈可以提供其他产品不能提供的卓越密封性能…

专栏特辑丨悬镜浅谈开源风险治理之SBOM与SCA

随着容器、微服务等新技术日新月异&#xff0c;开源软件成为业界主流形态&#xff0c;软件行业快速发展。但同时&#xff0c;软件供应链也越来越趋于复杂化和多样化&#xff0c;软件供应链安全风险不断加剧。 软件供应链安全主要包括软件开发生命周期和软件生存运营周期&#x…

vue3项目创建-配置-elementPlus导入-路由自动导入

目录 方法一&#xff1a;create-vue 方法二 &#xff1a;Vite Vue Vite.config.ts配置 引入element-plus 安装 如何在项目中使用 Element Plus 完整引入 按需导入 vue3vite中自动配置路由的神器&#xff1a;vite-plugin-pages 1. 安装 2、修改vite.config.js中配置…

MUSE Pi Pro 编译kernel内核及创建自动化脚本进行环境配置

视频讲解&#xff1a; MUSE Pi Pro 编译kernel内核及创建自动化脚本进行环境配置 今天分享的主题为创建自动化脚本编译MUSE Pi Pro的kernel内核&#xff0c;脚本已经上传到中 GitHub - LitchiCheng/MUSE-Pi-Pro-Learning: MUSE-Pi-Pro-Learning &#xff0c;有需要可以自行clon…

Innovus 25.1 版本更新:助力数字后端物理设计新飞跃

在数字后端物理设计领域&#xff0c;每一次工具的更新迭代都可能为项目带来巨大的效率提升与品质优化。今天&#xff0c;就让我们一同聚焦 Innovus 25.1 版本&#xff08;即 25.10 版本&#xff09;的更新要点&#xff0c;探寻其中蕴藏的创新能量。 一、核心功能的强势进 AI…

CodeBuddy 中国版 Cursor 实战:Redis+MySQL双引擎驱动〈王者荣耀〉战区排行榜

文章目录 一、引言二、系统架构设计2.1、整体架构概览2.2、数据库设计2.3、后端服务设计 三、实战&#xff1a;从零构建排行榜3.1、开发环境准备3.2、用户与战区 数据管理3.2.1、MySQL 数据库表创建3.2.2、实现用户和战区数据的 CURD 操作 3.3、实时分数更新3.4、排行榜查询3.5…

在线SQL转ER图工具

在线SQL转ER图网站 在数据库设计、软件开发或学术研究中&#xff0c;ER图&#xff08;实体-关系图&#xff09; 是展示数据库结构的重要工具。然而&#xff0c;手动绘制ER图不仅耗时费力&#xff0c;还容易出错。今天&#xff0c;我将为大家推荐一款非常实用的在线工具——SQL…

python高级特性

json.dumps({a:1,n:2}) #Python 字典类型转换为 JSON 对象。相当于jsonify data2 json.loads(json_str)#将 JSON 对象转换为 Python 字典 异步编程&#xff1a;在异步编程中&#xff0c;程序可以启动一个长时间运行的任务&#xff0c;然后继续执行其他任务&#xff0c;而无需等…

汇编:子程序设计

一、 实验要求 实验目的&#xff1a; 熟练掌握算术运算汇编指令的使用熟练掌握子程序设计的基本方法熟练掌握程序的调试方法 实验内容&#xff1a; 编程实现两个数&#xff1a;#8888H和#79H的乘除运算结合实验1的代码&#xff0c;将加减乘除四则运算写成四个子程序&#xff…

从概念表达到安全验证:智能驾驶功能迎来系统性规范

随着辅助驾驶事故频发&#xff0c;监管机制正在迅速补位。面对能力表达、使用责任、功能部署等方面的新要求&#xff0c;行业开始重估技术边界与验证能力&#xff0c;数字样机正成为企业合规落地的重要抓手。 2025年以来&#xff0c;围绕智能驾驶功能的争议不断升级。多起因辅…

DeepSeek基于注意力模型的可控图像生成

DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 图像的加噪与模型训练 在扩散模型的训练过程中&#xff0c;首先需要对输入的信号进行加噪处理&#xff0c;经典的加噪过程是在图像进行向量化处理后在其中添加正态分布&#xff0c;而正态分布的值也是与时间…

“端 - 边 - 云”三级智能协同平台的理论建构与技术实现

摘要 随着低空经济与智能制造的深度融合&#xff0c;传统集中式云计算架构在实时性、隐私保护和资源效率上的瓶颈日益凸显。本文提出“端 - 边 - 云”三级智能协同平台架构&#xff0c;以“时空 - 资源 - 服务”三维协同理论为核心&#xff0c;构建覆盖终端感知、边缘计算、云端…

AI时代,如何实现人机共舞?

在科技飞速发展的当下&#xff0c;人工智能&#xff08;AI&#xff09;已不再是科幻作品中的遥远想象&#xff0c;而是深入渗透到我们生活与工作的方方面面。从智能手机中的语音助手&#xff0c;到金融领域的风险预测模型&#xff1b;从医疗影像的智能诊断&#xff0c;到工业生…

OceanBase 在业务监控系统中的应用实践

本文作者来自于一家总部在宁波的新能源上市公司&#xff0c;公司业务包括光伏新能源产品的研发与产销。 作为年产值达百亿的企业&#xff0c;监控系统是不可或缺的IT管理体系之一&#xff0c;对于确保业务连续性及预警风险非常重要。2022年&#xff0c;公司选择把Zabbix作为企业…

每日Prompt:品牌化键盘键帽

提示词 一个超逼真的3D渲染图&#xff0c;展示了四个机械键盘键帽&#xff0c;排列成紧密的2x2网格&#xff0c;所有键帽相互接触。从等轴测角度观察。一个键帽是透明的&#xff0c;上面用红色印刷着“{just}”字样。另外三个键帽采用颜色&#xff1a;{黑色、紫色和白色}。一个…

超声波传感器模块

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 1.HC-SR04介绍2.HC-SR04原理介绍2.1原理概述3.2原理详解 4驱动代码编写4.1写前思考4.2硬件连线 5.总结hcsr04.hhcsr04.c 1.HC-SR04介绍 超声波传感器有很多种类的型号&#xff1a;HC-SR04、UC-025、…