本文重点

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创建项目

1)打开https://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 测试代码

 .idea #IDEA 软件特有的文件夹,隐藏文件
.mvn #Maven项目特有的文件,隐藏文件
src #存放源码包括了java代码和配置文件和资源文件
main #java代码
java
com
pringbook
SpringstudyApplication #启动类java文件
resource #资源文件包括静态文件
application.properties #项目的配置文件,比如配置服务器端口等
test #测试文件夹
mvnw #maven项目辅助文件,自动生成
mvnw.cmd #maven项目辅助文件,自动生成
pom.xml #maven项目配置文件,类似于C#的web.config
study.iml #iml 是IDEA软件的项目标识文件,一般是自动创建的
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> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</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:jar: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=

  

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
public void getHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/hello/say").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.-SNAPSHOT.jar

  

总之,Spring Boot是一个优秀的实战型框架,他既简单又强大。

问题

1.Failed to read artifact descriptor for org.springframework.boot:spring-boot-starter-web:jar: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=

  

源码下载

本文源码下载Github-spring-boot-study-helloword

点个赞呗

Spring Boot 2.x 快速入门(上)HelloWorld示例的更多相关文章

  1. Spring Boot 2.x 快速入门(下)HelloWorld示例详解

    上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...

  2. Spring Boot从入门到精通之:一、Spring Boot简介及快速入门

    Spring Boot Spring Boot 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来 ...

  3. 2、Spring Boot 2.x 快速入门

    1.2 Spring Boot 快速入门 1.2.1 开发环境和工具 JDK 1.8+:Spring Boot 2.x 要求 JDK 1.8 环境及以上版本.另外,Spring Boot 2.x 只兼 ...

  4. 初识Spring Boot框架和快速入门

    前面的铺垫文章已经连着写了六篇了,主要是介绍了spring和SpringMVC框架,小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做JavaEE开发的小伙伴们肯定也听说 ...

  5. Spring Boot WebFlux-01——WebFlux 快速入门实践

    第01课:WebFlux 快速入门实践 Spring Boot 2.0 spring.io 官网有句醒目的话是: BUILD ANYTHING WITH SPRING BOOT Spring Boot ...

  6. spring boot / cloud (十七) 快速搭建注册中心和配置中心

    spring boot / cloud (十七) 快速搭建注册中心和配置中心 本文将使用spring cloud的eureka和config server来搭建. 然后搭建的模式,有很多种,本文主要聊 ...

  7. Spring Boot 2.0 快速集成整合消息中间件 Kafka

    欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site ...

  8. Spring Boot 2.x 快速集成Kafka

    1 Kafka Kafka是一个开源分布式的流处理平台,一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据.Kafka由Scala和Java编写,2012年成为Apache ...

  9. spring boot集成redis基础入门

    redis 支持持久化数据,不仅支持key-value类型的数据,还拥有list,set,zset,hash等数据结构的存储. 可以进行master-slave模式的数据备份 更多redis相关文档请 ...

随机推荐

  1. AspNetCore 文件上传(模型绑定、Ajax) 两种方式 get到了吗?

    就目前来说,ASP.NET Core2.1了,已经相当成熟了,希望下个项目争取使用吧!! 上传文件的三种方式("我会的,说不定还有其他方式") 模型绑定 Ajax WebUploa ...

  2. 你真的了解 i++, ++i 和 i+++++i 以及 i+++i++ 吗?

    我想大部分都知道 i++ 和 ++i的区别,i++ 就是先拿i来使用,之后再自增加1,而++i则是先自增加1,在拿i来使用,例如对于下面这两个语句,我敢保证大部分人都会做: int i = 1; Sy ...

  3. HBase查询优化之Short-Circuit Local Reads

    1.概述 在<HBase查询优化>一文中,介绍了基于HBase层面的读取优化.由于HBase的实际数据是以HFile的形式,存储在HDFS上.那么,HDFS层面也有它自己的优化点,即:Sh ...

  4. jmeter 分布式压测(Linux)

    之前一篇博文写的是如何在Linux上使用jmeter压测,这篇介绍下Linux上jmeter的分布式压测. 和windows上的分布式类似,需要配置agent节点和控制机 一.Agent节点配置 1. ...

  5. Ruby数组方法整理

    数组方法整理 方法列表: all().any().none()和one():测试数组中的所有或部分元素是否满足给定条件.条件可以是语句块中决定,也可以是参数决定 append():等价于push() ...

  6. EF三种编程方式的区别Database first ,Model first ,code first

    首先对于EF中先出现的datebase  first和model first两种编程方式,其的区别根据字面意思很容易能够理解. datebase  first就是代表数据库优先,那么前提就是先创建数据 ...

  7. WPF 窗口大小自适应

    在设置桌面不同分辨率以及较大DPI下,窗口如何显示的问题. 方案一 设置窗口最大值和最小值显示 通过对比当前屏幕的可显示区域,将窗口高宽最大值和最小值,设置为窗口的实际高宽(此例中仅设置高度) 界面设 ...

  8. 基于MVC的网站和在线教育系统

    最近老表说要创业,想要做一个网站做宣传,还想要一个在线教育系统. 学习了一部分 Java,  决定用.Net MVC做官网或直接做成静态HTML网站,主要是因为.Net MVC 技术简单,效率高,需求 ...

  9. Kotlin 数组学习笔记

    创建数组 初始值为空的String数组 val arrayEmpty = emptyArray<String>() 长度为5,初始值为空的Int数组 val arrayEmpty = em ...

  10. IIS中虚拟目录不继承主站点web.config设置的办法(转载)

    ASP.NET提供了强大的Web.config来配置网站,一般来说一个网站只有一个根目录下的Web.config文件,有时候我们希望子目录有着不同的权限或者参数设置,则可以在相应子目录增加一个Web. ...