Spring Boot 快速入门 Helloworld 示例
本文重点
Spring Boot 快速入门(Spring Boot 2.0 及以上)
如何使用 Spring Boot 快速入门 快速创建 HelloWorld 项目,主要涉及到
1. 创建 ( 生成)一个 Spring Boot 标准项目
2. 配置 Pom.xml 文件
3. 编写示例代码
4. 编写测试代码
5. 运行和调试
6. 打包发布
本文源码下载 Github-spring-boot-study-helloword
一、Spring Boot 是什么
Spring Boot 是 Spring 家族成员之一
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。下面摘自 spring boot 中文文档
- 为所有的 Spring 开发提供一个从根本上更快的和广泛使用的入门经验
- 开箱即用,但你可以通过不采用默认设置来摆脱这种方式
- 提供一系列大型项目常用的非功能性特征
- 绝对不需要代码生成及 XML 配置
二、Spring Boot 有什么优点
以下谈到个人认为的几点
1. 入门门槛低,只要懂程序的 java、c#、php、js 都能快速入门
2. 强大的生态,几乎没有什么功能是需要自己从头开始开发
3. 部署方便,独立服务器也好、云部署也好、docker 也好都非常方便
三、Spring Boot 快速入门 HelloWord
一般 SpringBoot 开发的步骤包括
1. 生成一个 Spring Boot 项目
2. 配置 Pom.xml
3. 编辑代码
4. 编写测试代码
5. 运行
6. 打包发布
1. 生成一个 Spring Boot 项目
这里我们介绍 在浏览器中实现一个 http://localhost:8999/hello/say web 程序。这里使用 IntelliJ IDEA 作为 IDE 环境来编译。也可以使用其他 IDE。
我们一般采用从 IDEA 创建 Spring Boot 项目,见 1.2.
1.1 使用 start.spring.io 创建项目
2)选择构建工具 Maven Project、Java、Spring Boot 版本 2.1.4 (注意这里文档版本是 2.1.4,但在下面的实践中 2.1.4 本地的 mvn 有问题,后面换成了 2.0.0) 、填写Group、Articfact 及一些工程基本信息,可参考下图所示:
如上图一些英文的含义
groupId:groupId分为几个字段,例如 com.companyname,前面的 com 叫【域】,后面的是你自己起的域名。这里是 com.fishpro
artifactId:artifactId 一般是项目名或者模块名。这里是 springstudy
Dependencies:依赖, 输入 web,选择 web
例如公司名称:baidu,项目名 peach 那么 groupId=com.baidu artifactId=peach 最终在 java 项目的基本包名为 com.baidu.peach。当然 groupId 也可以是 com.baidu.look 这种形式,完全有开发者自己定义。
本示例项目 groupId=com.fishpro artifactId=springstudy
3)点击绿色按钮【Generate Project】生成项目,浏览器则自动下载项目,我命名的是 springhello,那么下载的是 springhello.zip
4)如下图,下载的位 maven 项目结构的 java 项目,使用 idea 开发工具打开这个文件夹,则会自动加载 maven 项目。
用 IDEA 打开(open) 文件后,idea 自动加载项目的依赖,请稍等片刻,一般在2 到 5 分钟,这取决于您的网络和系统性能。
也可以使用 功能,导入文件夹为 Maven 项目,一路点击【next】即可。
5)IDEA 导入 Spring Boot 的项目结构,截图如下:
项目结构简单说明
src/main/java 下是主程序的 java 代码存放处
src/resource 是资源文件包括图片、Css、Javascript 等静态文件和配置文件 yml 或 properties 文件
src/test/java 测试代码
1 .idea #IDEA 软件特有的文件夹,隐藏文件 2 .mvn #Maven 项目特有的文件,隐藏文件 3 src #存放源码包括了 java 代码和配置文件和资源文件 4 main #java 代码 5 java 6 com 7 pringbook 8 SpringstudyApplication #启动类 java 文件 9 resource #资源文件包括静态文件 10 application.properties #项目的配置文件,比如配置服务器端口等 11 test #测试文件夹 12 mvnw #maven 项目辅助文件,自动生成 13 mvnw.cmd #maven 项目辅助文件,自动生成 14 pom.xml #maven 项目配置文件,类似于 C# 的 web.config 15 study.iml #iml 是 IDEA 软件的项目标识文件,一般是自动创建的 16 Externel Libraries #lib 文件,这个不用管,是自动的
1.2 使用 IDEA 创建项目
使用 IDEA 创建项目,其实也是从 https://start.spring.io/ 创建,只是更为方便,我们一般采用从 IDEA 创建 Spring Boot 项目。
注意 mac 和 windows 的 IDEA 创建过程是一样的。
1)File>New>Project,如下图选择 Spring Initializr 然后点击 【Next】下一步
2)填写 GroupId(包名)、Artifact(项目名) 即可。
groupId=com.fishpro
artifactId=springstudy
3)选择依赖,我们选择 Web
2. 配置 Pom.xml
注意如果生成项目的时候没有设置 Dependencies,选择 web,那么这里要在 Pom.xml 中设置,Pom.xml 设置依赖也非常的简单,直接把 <dependency></dependency> 的节点拷贝到 pom 依赖节点中即可。
Pom.xml 属于 maven 项目结构的项目依赖项配置文件,主要管理第三方包的引用。
默认项目配置了 spring-boot-starter 和 spring-boot-starter-test ,配置如下
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">></span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">></span>org.springframework.boot<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">></span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">></span>spring-boot-starter-test<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">></span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">scope</span><span style="color: rgba(0, 0, 255, 1)">></span>test<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">scope</span><span style="color: rgba(0, 0, 255, 1)">></span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">></span>
</dependencies>
因为示例项目是 web 项目所以需要引入 web 模块,在 dependency 下增加节点,增加后如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
注意,如果 IDEA 没有自动导入,那么前往右下角,点击【Import Changes】
有的时候会出问题了!
1.Failed to read artifact descriptor for org.springframework.boot:spring-boot-starter-web🏺2.1.4.RELEASE less... (⌘F1)
Inspects a Maven model for resolution problems.
未能加载 spring-boot-starter-web:jar,这个应该是 mvn 管理器加载问题。去掉里面依赖
答:spring boot 2.1.4 的 mvn 有问题,改成 2.0.0 就好了。当然这可能是其他原因,我使用 IDEA 创建的项目就没有这个问题。
3. 编写代码
3.1 Web 项目的常用目录结构
通常,我们使用三层结构来编写。
应用层(Controller)、服务层(Service)、数据层(Dao)
我们也增加对应的包目录。
3.2 增加 Controller 包
1)在本示例中,右键 springstudy 包名,新建包名 controller (注意一般是消息)
2)在 controller 下新建 HelloWorldController.java (注意首字母大写)
3)在 HelloWorldController 中增加 java 代码
@RestController @RequestMapping("/hello") public class HelloWorldController { @RequestMapping("/say") public String say(){ return "Hello World"; } }
3.3 更改 Web 端口
因我的系统端口默认 8080 倍 nginx 占领了,我把本次项目的启动端口改为 8999
在 resources\application.properties 中设置(注意有的网络教程中是 application.yml 其实这是另一种配置文件格式,就想 json 和 xml 只是格式不同,功能作用一样)
#设置端口号 server.port=8999
4. 编写测试代码
测试代码在 src\test\java 下面编写
1)在本示例中,右键 src\test\java\com\fishpro\springstudy 包名,新建包名 controller (注意一般是消息)
2)在 controller 下新建 HelloWorldControllerTests.java (注意对应于 main 下,一般后缀 Tests)
3)在 HelloWorldControllerTests 中增加 java 代码
package com.fishpro.springstudy.controller;import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloWorldControllerTests {
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}@Test </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> getHello() <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> Exception { mockMvc.perform(MockMvcRequestBuilders.get(</span>"/hello/say"<span style="color: rgba(0, 0, 0, 1)">).accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); }
}
5. 运行
5.1 运行程序或调试程序
点击右上角,绿色运行三角形按钮,启动运行,或点击它旁边的爬虫按钮,进行调试。
或者点击菜单
Run>Run 'SpringstudyApplication'
Run>Debug 'SpringstudyApplication'
浏览器输入 http://localhost:8999/hello/say
5.2 运行测试用例
右键 HelloWorldControllerTests.java 选择 Run 'HelloWorldControllerTests' with Coverage
6. 打包发布
通常我们一 jar 方式打包发布,war 方式用于单独的发布到已有的 tomcat web 服务器中,以后的实践中再讲。
1)选择 View> Tool Windows>Terminal
2)输入命令
mvn clean
mvn install
在根目录下有个 target 文件夹,
3)模拟服务器环境,运行 jar 文件,输入命令,后则可以在浏览器中得到结果。
java -jar springstudy-0.0.1-SNAPSHOT.jar
总之,Spring Boot 是一个优秀的实战型框架,他既简单又强大。
问题
1.Failed to read artifact descriptor for org.springframework.boot:spring-boot-starter-web🏺2.1.4.RELEASE less... (⌘F1)
Inspects a Maven model for resolution problems.
未能加载 spring-boot-starter-web:jar,这个应该是 mvn 管理器加载问题。
2. 端口问题
默认是 8080 端口,如果端口被占用了(例如 mac 的 nginx 默认是 8080),需要修改,那么在 resources\application.properties 中设置
#设置端口号 server.port=8999
源码下载
本文源码下载 Github-spring-boot-study-helloword
点个赞呗