SpringBoot系列—入门

目录

[1 第一个SpringBoot程序](#1 第一个SpringBoot程序)

[1.1 创建SpringBoot项目](#1.1 创建SpringBoot项目)

[1.2 选择SpringBoot版本和必要依赖](#1.2 选择SpringBoot版本和必要依赖)

[1.3 项目目录结构](#1.3 项目目录结构)

[1.4 编写Hello World代码](#1.4 编写Hello World代码)

[1.5 运行程序](#1.5 运行程序)

[1.6 不需要IDEA也能创建SpringBoot程序](#1.6 不需要IDEA也能创建SpringBoot程序)

[1.7 部署程序](#1.7 部署程序)

[1.8 pom.xml依赖问题](#1.8 pom.xml依赖问题)

[1.9 无Maven选项问题](#1.9 无Maven选项问题)

[1.10 SpringBoot版本和Java版本不匹配](#1.10 SpringBoot版本和Java版本不匹配)

[2 Spring、SpringMVC和SpringBoot的区别和联系](#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代码

java 复制代码
@RestController

public 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程序,也可以开发其他应用程序,比如游戏、桌面应用等等。

相关推荐
考虑考虑1 小时前
JDK9中的dropWhile
java·后端·java ee
想躺平的咸鱼干1 小时前
Volatile解决指令重排和单例模式
java·开发语言·单例模式·线程·并发编程
hqxstudying1 小时前
java依赖注入方法
java·spring·log4j·ioc·依赖
·云扬·2 小时前
【Java源码阅读系列37】深度解读Java BufferedReader 源码
java·开发语言
martinzh2 小时前
Spring AI 项目介绍
后端
Bug退退退1233 小时前
RabbitMQ 高级特性之重试机制
java·分布式·spring·rabbitmq
小皮侠3 小时前
nginx的使用
java·运维·服务器·前端·git·nginx·github
前端付豪3 小时前
20、用 Python + API 打造终端天气预报工具(支持城市查询、天气图标、美化输出🧊
后端·python
爱学习的小学渣3 小时前
关系型数据库
后端
武子康3 小时前
大数据-33 HBase 整体架构 HMaster HRegion
大数据·后端·hbase