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

SpringBoot系列—入门

目录

1 第一个SpringBoot程序

1.1 创建SpringBoot项目

1.2 选择SpringBoot版本和必要依赖

1.3 项目目录结构

1.4 编写Hello World代码

1.5 运行程序

1.6 不需要IDEA也能创建SpringBoot程序

1.7 部署程序

1.8 pom.xml依赖问题

1.9 无Maven选项问题

1.10 SpringBoot版本和Java版本不匹配

2 Spring、SpringMVC和SpringBoot的区别和联系


        SpringBoot框架是为了简化Spring程序的开发(是Spring程序开发的脚手架)。在介绍SpringBoot前,先来使用一下SpringBoot来写第一个hello world程序。

1 第一个SpringBoot程序

1.1 创建SpringBoot项目

        SpringBoot程序要部署的时候,不再像Servlet要打成War包,而是打成Jar包,这里后面会详细说明。

        注意:如果使用IDEA 社区版,需要安装Spring Boot Help插件,才能创建SpringBoot程序。这里是直接使用专业版,内部集成了SpringBoot的插件。

1.2 选择SpringBoot版本和必要依赖

        选择SpringBoot的版本,2.x版本对应Java 8,3.x版本对应Java 17。

        注意:选择版本经常会看到SNAPSHOT,这表示是快照,即不稳定版本。如果选择了这个版本,SNAPSHOT版本的程序出现问题,可以修改后重新发包。如果选择了不带SNAPSHOT的版本,程序出现问题后,不能修改,如果要修改就要发布下一个版本号的程序。

        同时要选择Spring Web依赖,这是Spring MVC的依赖,SpringBoot程序是基于Spring MVC的。

1.3 项目目录结构

        首次创建SpringBoot项目,需要一定的时间,因为SpringBoot的相关依赖需要从中央仓库下载到本地仓库(注意配置Maven国内源加速下载)。

  • src/main/java:Java源代码。
  • src/main/resources:静态资源(包括html、css、js等文件)或SpringBoot的配置文件:application.properties。
  • src/test/java:测试代码。
  • target:编译后的文件路径。
  • pom.xml:Maven配置文件。
  • .gitignore:git时要忽略的文件。

1.4 编写Hello World代码

@RestControllerpublic class UserController {@RequestMapping("/helloSpringBoot")public String Hello(){return "Hello,SpringBoot";}}

1.5 运行程序

        在包含@SpringBootApplication注解的文件中点击启动的绿色箭头,即可启动。

        观察启动日志可以发现,在上图第4行,说明SpringBoot内置了Tomcat(传统Tomcat部署Servlet程序webapps目录下有多个项目,因此访问路径需要加上项目名因此SpringBoot项目访问路径不需要加上项目名),因此部署SpringBoot项目时我们不再打成War包部署在Tomcat的webapps目录下。第6行说明了SpringBoot是对Servlet的封装。倒数第2行说明了Tomcat的端口号是8080(想要切换端口号,在application.properties文件中添加server.port=端口号)。

        注意:传统Tomcat部署Servlet程序webapps目录下有多个项目,因此访问路径需要加上项目名。而SpringBoot内置了Tomcat,因此SpringBoot项目访问路径不需要加上项目名。如果要同时启动多个SpringBoot项目,更改每个项目Tomcat不同的端口号即可。

        如果启动成功,就能在对应的url上访问到方法。如果输出的是中文,也不会乱码(这也是SpringBoot自动把字符集处理了)。

1.6 不需要IDEA也能创建SpringBoot程序

        前往https://start.spring.io,打开页面结构和IDEA的类似,创建好后可以下载到本地。

1.7 部署程序

        把项目打成jar包后,在命令行直接使用java -jar即可运行程序。Windows和Linux都一样。

1.8 pom.xml依赖问题

        pom.xml文件中可能存在有些依赖包一直是红色(没有引入到项目中)的问题。解决思路:

        1.去中央仓库位于https://repo1.maven.org/maven2/和查询网站https://mvnrepository.com查看包名是否存在,如果不存在改为正确的包名。

        2.如果包是存在的,说明包还未下载到项目中,多次点击Maven的刷新,看看是否解决问题。

        3.如果多次刷新后无效,就去本地仓库把对应的jar包删除(有可能因为网络问题导致jar包下载的不完整),再重新刷新下载jar包。

        4.切换网络,删除本地仓库的jar包再次下载。

        5.隔段时间再下载

        多次重复上述步骤,问题总会解决的。

1.9 无Maven选项问题

        右键左侧文件目录中的项目名,选择Add Framework Support,在打开的界面勾选Maven即可。

1.10 SpringBoot版本和Java版本不匹配

        SpringBoot的2.x版本对应Java 8,3.x版本对应Java 17。如果在创建目录的时候没有注意,就会导致出现“无效目标发行版17”等问题。解决办法:

        1.重新创建项目。

        2.修改项目中所有和Java版本相关的属性,分别在:pom.xml、settings和Project Structure中。

        上述地方仔细确认是否Java版本和SpringBoot版本匹配。

2 Spring、SpringMVC和SpringBoot的区别和联系

        (1)Spring(Spring Framework)是一个开发应用的框架,具有轻量级、一站式、模块化等特征,目的是为了简化企业级应用程序开发。

        Spring具有:对象和依赖关系的管理、面向切面编程、数据库事务管理、数据访问、Web框架支持等功能。它具有高度可开放性,可以无缝支持第三方框架(数据访问(Hibernate、JPA等)、Web(Struts、JSF等)),并且开发人员无需使用Spring的全部,需要什么功能使用什么功能即可。

        (2)SpringMVC是Spring的一个子框架,全称Spring Web MVC。它是基于Spring和MVC思想开发的一个Web框架,也就是说Spring可以开发各种应用程序,但是SpringMVC专精Web程序的开发。

        其中的MVC思想是Model模型、View视图、Controller控制器。View视图可以理解为用户交互界面,比如Web程序中的浏览器页面。Controller控制器是处理网络交互的请求和响应。Model模型负责业务逻辑,比如和数据库的数据交互等等。但是MVC思想与时俱进,逐渐演化为现在的前后端分离的开发思想,前端负责页面的展示,后端负责业务逻辑。而后端具体可以大概分为:Controller层、Service层和Dao层,其中Controller层就是MVC中的View和Controller的组合,而Service层和Dao层就是Model,这样做是为了更好的项目结构解耦,形成高内聚、低耦合的项目。

        抛去MVC思想,SpringMVC可以理解为Spring Web开发的一个大型库,实现了对Servlet的封装,提供了很多的包和注解便于Web项目的开发:比如URL地址映射、对请求和响应的处理。

        (3)SpringBoot是对Spring的封装,是Spring开发的脚手架,核心思想约定大于配置,目的是为了简化Spring应用的开发流程,让企业更关注业务逻辑,无需过多关注xml配置和底层实现,降低开发成本。

        比如SpringBoot内部集成了Tomcat服务器,无需让开发人员关系项目部署问题,直接运行jar包即可开启服务。如果想要开发Web程序,引入SpringMVC框架即可。如果想要项目有和数据库交互的能力,引入MyBatis框架即可。

        总结:SpringMVC和SpringBoot都属于Spring系列框架,SpringMVC简化了Spring Web开发,SpringBoot简化了Spring应用开发。

        注意:Spring Web和Spring应用的关系,Spring Web只是Spring众多应用的一部分,即我们使用Spring不止能开发Web程序,也可以开发其他应用程序,比如游戏、桌面应用等等。

http://www.xdnf.cn/news/15007.html

相关文章:

  • PostgreSQL表操作
  • 深度学习5(深层神经网络 + 参数和超参数)
  • C++ 网络编程(15) 利用asio协程搭建异步服务器
  • 从数据洞察到设计创新:UI前端如何利用数字孪生提升用户体验?
  • 浏览器与服务器的交互
  • dify 1.5.1版本全面解析——知识库索引、动态参数及结构化输出插件全新登场
  • STM32的 syscalls.c 和 sysmem.c
  • 《C++初阶之类和对象》【经典案例:日期类】
  • RESTful API 安装使用教程
  • 黑马python(二十五)
  • Spring Boot + 本地部署大模型实现:优化与性能提升
  • 基于Linux的Spark本地模式环境搭建实验指南
  • 【github】想fork的项目变为私有副本
  • 项目介绍:LangGPT
  • Android View的绘制原理详解
  • 使用reactor-rabbitmq库监听Rabbitmq
  • Python 量化交易安装使用教程
  • opencv的颜色通道问题 rgb bgr
  • 如何查看自己电脑的CUDA版本?
  • 【深度解析】Seedance 1.0:重新定义 AI 视频生成的工业级标准
  • 《Java修仙传:从凡胎到码帝》第三章:缩进之劫与函数峰试炼
  • python脚本编程:使用BeautifulSoup爬虫库获取热门单机游戏排行榜
  • PHP从字符串到数值的类型转换
  • 三、jenkins使用tomcat部署项目
  • 服务器间接口安全问题的全面分析
  • 模拟热血三国内城安置建筑物
  • 【wps】 excel 删除重复项
  • 【Spring Boot】HikariCP 连接池 YAML 配置详解
  • Tomcat镜像实战:掌握Dockerfile的编写以及发布项目
  • day47-tomcat