前面的文章从开发工具的角度,直接了当地实现了HelloWorld程序,当时注重整个环境地搭建,本文主要聚焦于Spring Boot 2 , 接下来的实践主要参考官网中文档。
1. 开发环境要求
打开官网文档中可以看到:
从文档中可以看到,当前最新版本是Spring Boot 2.6.5 版本,要求Java 8 及以上版本,要求 Maven 3.5 及以上版本。前面的文章(91条消息) 1. 从零开始搭建开发 Spring Boot 的环境_龙泉太阿的博客-优快云博客_从零springboothttps://blog.youkuaiyun.com/menergy/article/details/122899814?spm=1001.2014.3001.5501中已经说明和安装了Java 和 Maven, 这里cmd检查一下版本:
本机Java 版本和Maven 版本都符合条件。
同时,这里运用Idea 作为开发工具,要求 idea 2019.1.2 版本以上,本实例用2021.2.4 版本。
2. 配置Maven
打开maven 安装目录下的...\apache-maven-3.8.4\conf\setting.xml 文件,找到mirror元素,添加阿里云仓库镜像配置,如下:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus.aliyun</name>
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
再为Maven 配置指定为JDK 1.8 的版本进行编译,这样可以避免开发中出现的版本问题:
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<repositories>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</repositories>
</profile>
3. 第一个应用HelloWorld
3.1. 首先创建一个Maven 项目
在创建之前,检查我们的Idea 中的maven配置:
创建一个maven项目:
点击finish创建maven项目如下:
3.2 配置POM项目依赖
参考官方文档的POM配置:
复制导入父工程到POM, :
发现标红,说明相关依赖包没有下载成功,可以刷新右边的刷新按钮,刷新后导入成功:
接下来,按照官方文档说明,添加Classpath依赖,以前Spring 开发要添加一堆依赖,现在Spring Boot 通过POM 父依赖已经帮我们创建好了相关的依赖,我们只需要添加一个spring-boot-starter-web 依赖即可,如下:
复制到 POM:
当配置好spring-boot-starter-web 依赖后,发现左边的外部依赖包中没有导入相关的包,这时可以向前面一样刷新右边的maven窗中的刷新按钮导包。但是,如果每次都这样收到导包,比较麻烦,其实可以设置idea 自动maven 导包, 如下:
1. 在第一次打开maven文件或者创建maven工程的时候,右下角会有提示是否
Import Changes — Enable Auto-Import
可以点击Enable Auto-Import ,那么在本次项目中会生效,在pom文件发生改动的时候,它会进行自动的导入。
2. 如果不是第一次,或者右下角没有提示,可以在Idea中settings里面进行设置,如下:
接着,包导入了,但是父项目依赖爆红:
解决父项目依赖爆红问题:
点击File --》 Invalidate Caches 刷新idea 缓存并重启:
重启后,导包正常,问题解决。 如下:
3.3 编写代码
参考官方文档:
类似的, 首先创建一个主类, 类名可以随意取:
创建后,并在这个类上加上一个“@SpringBootApplication” 注解,相当于告诉Spring boot,这是一个Spring boot 应用:
标注了“”注解的类,相当于主程序类,是所有其他程序的入口,然后采用固定写法,把这个主类赋予给SpringApplication类,让它帮忙跑起来。如下:
注: 这个可以作为固定写法。
接着,创建一个Controller:
然后给这个类标注注解“@Controller” 来告诉Spring Boot 这时一个Controller 类:
接着给这个类写个方法来处理请求,给这个方法标注注解“@RequestMapping” 来映射请求,映射的请求是:让浏览器发送“hello” 请求,然后服务器返回“Hello, Spring Boot 2”, 如下:
因为返回的信息要以字符串方式写给浏览器,所以这里再在方法上加个注解“@ResponseBody”:
因为之后的方法都是以字符串的方式返回给浏览器,而不是跳转到某个页面。所以可以把注解“@ResponseBody”标在类上:
注解“@ResponseBody” 和 注解 “@Controller” 可以用Spring MVC 提供的新注解“@RestController”来代替:
我们可以点击“@RestController” 进去看,发现就是注解“@ResponseBody” 和 注解 “@Controller” 的结合:
注:以后都可以用“@RestController” 代替“@ResponseBody” 和 “@Controller” 。
3.4 运行程序
直接在主类中运行main 方法即可:
运行后,发现日志中也提示了8080端口访问:
接着浏览器访问“localhost:8080/hello”:
浏览器响应了结果, 程序成功。
3.5 Spring Boot 的简化配置
从上面的例子,可以看到,简化了很多依赖和配置。那么Spring Boot 怎么简化配置呢?
Spring Boot 把所有配置都抽取到一个配置文件中配置, 接下来新建这个配置文件:
同时,在这个配置文件中配置修改服务器端口号到“8888”,重启服务器,访问“localhost:8888/hello”,看一下效果:
端口后被改变了。
注:Spring Boot 就专门为我们统一了这个配置文件,以后所有配置都可以在这里进行配置。如果不更改配置,都有默认的配置,具体有哪些配置, Spring Boot官方文档都提供了说明:
3.6 Spring Boot 的简化部署
以前,部署到目标服务器, 目标服务器还要装Tomcat等很多工作,还要把应用打成War 包。 现在的这个Maven 项目,如果不写打包方式就是Jar 包,参考官方文档:
我们只需要引入文档中提供的插件“spring-boot-maven-plugin” ,就可以把项目打成Jar 包:
接着,点击maven 的“clean” 和 “package” 打包(也可以同时选住clean 和 package , 然后单击上面的运行标签):
打包完成,发现生成了目标Jar 包:
右键“target” ,直接进入文件夹:
直接cmd 进入到这个文件夹,执行“java -jar Jar包” 命令:
启动成功:
浏览器访问8888端口:
部署成功。