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 小时前
若依【(前后端分离版)SpringBoot+Vue3】
java·spring boot·后端
paopaokaka_luck1 小时前
婚纱摄影管理系统(发送邮箱、腾讯地图API、物流API、webSocket实时聊天、协同过滤算法、Echarts图形化分析)
vue.js·spring boot·后端·websocket·算法·echarts
Monkey-旭4 小时前
Android Handler 完全指南
android·java·handler
秃狼4 小时前
Execel文档批量替换标签实现方案
java
Brookty4 小时前
Java线程安全与中断机制详解
java·开发语言·后端·学习·java-ee
Sylvia-girl4 小时前
排序查找算法,Map集合,集合的嵌套,Collections工具类
java·算法·排序算法
TT哇4 小时前
【分治】归并排序——排序数组(medium)
java·算法·排序算法
给力学长5 小时前
自习室预约小程序的设计与实现
java·数据库·vue.js·elementui·小程序·uni-app·node.js
试着5 小时前
零基础学习性能测试第五章:JVM性能分析与调优-JVM概念,java程序运行原理
java·jvm·学习·零基础·性能测试
你的人类朋友5 小时前
❤️‍🔥BFF架构版的hello world
前端·后端·架构