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