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

相关推荐
兮动人4 分钟前
获取终端外网IP地址
java·网络·网络协议·tcp/ip·获取终端外网ip地址
呆呆的小鳄鱼5 分钟前
cin,cin.get()等异同点[面试题系列]
java·算法·面试
独立开阀者_FwtCoder15 分钟前
"页面白屏了?别慌!前端工程师必备的排查技巧和面试攻略"
java·前端·javascript
Touper.20 分钟前
JavaSE -- 泛型详细介绍
java·开发语言·算法
狂师23 分钟前
啥是AI Agent!2025年值得推荐入坑AI Agent的五大工具框架!(新手科普篇)
人工智能·后端·程序员
星辰大海的精灵25 分钟前
使用Docker和Kubernetes部署机器学习模型
人工智能·后端·架构
MikeWe28 分钟前
C++宏的解析:从基础语法到实战场景
后端
向往技术的猫菜33 分钟前
Java必需要会的MySQL知识
后端
Frank_zhou36 分钟前
Java代码是如何运行起来的
后端
Victor35636 分钟前
MySQL(121)如何处理死锁问题?
后端