Spring Boot 2.x 快速入门(上)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 测试代码
.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示例的更多相关文章
- Spring Boot 2.x 快速入门(下)HelloWorld示例详解
上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...
- Spring Boot从入门到精通之:一、Spring Boot简介及快速入门
Spring Boot Spring Boot 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来 ...
- 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 只兼 ...
- 初识Spring Boot框架和快速入门
前面的铺垫文章已经连着写了六篇了,主要是介绍了spring和SpringMVC框架,小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做JavaEE开发的小伙伴们肯定也听说 ...
- Spring Boot WebFlux-01——WebFlux 快速入门实践
第01课:WebFlux 快速入门实践 Spring Boot 2.0 spring.io 官网有句醒目的话是: BUILD ANYTHING WITH SPRING BOOT Spring Boot ...
- spring boot / cloud (十七) 快速搭建注册中心和配置中心
spring boot / cloud (十七) 快速搭建注册中心和配置中心 本文将使用spring cloud的eureka和config server来搭建. 然后搭建的模式,有很多种,本文主要聊 ...
- Spring Boot 2.0 快速集成整合消息中间件 Kafka
欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site ...
- Spring Boot 2.x 快速集成Kafka
1 Kafka Kafka是一个开源分布式的流处理平台,一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据.Kafka由Scala和Java编写,2012年成为Apache ...
- spring boot集成redis基础入门
redis 支持持久化数据,不仅支持key-value类型的数据,还拥有list,set,zset,hash等数据结构的存储. 可以进行master-slave模式的数据备份 更多redis相关文档请 ...
随机推荐
- Jquery.ajax dataType参数
dataType 类型:String 预期服务器返回的数据类型.如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML.在 1.4 ...
- C++版- Leetcode 3. Longest Substring Without Repeating Characters解题报告
Leetcode 3. Longest Substring Without Repeating Characters 提交网址: https://leetcode.com/problems/longe ...
- 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件
代码: using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DemoWebControl ...
- Java 8的用法(泛型接口,谓词链)
1.泛型接口 我们举个例子,以前来看一下JPA定义的写法: Specification接口为: public interface Specification<T> { Predicate ...
- Java开发知识之Java中的泛型
Java开发知识之Java中的泛型 一丶简介什么是泛型. 泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了. 这样是可以的. 二丶Java中的泛型 Java中,所有类的父类都是Object类. ...
- 网页数据抓取工具,webscraper 最简单的数据抓取教程,人人都用得上
Web Scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据.例如知乎回答列表.微博热门.微博评论.淘宝.天猫.亚马逊等电商 ...
- 测试一波SpringBoot的HTTP吞吐量
本来,其实就我个人而言现在很少去弄性能这一块的阵地了,主要在做设计与架构,不过前几天刚刚关注公众号的罗哥给我抛了关于性能方面的问题. 一个问题立马引起了我的兴趣,太久没弄性能方面的事情了,所以在隔天有 ...
- 命令行BASH的基本操作
前面说了,我们要尽量少用GNOME图形界面,而应该以使用BASH命令行为主. SHELL Shell是操作系统内核的壳,因为我们不能直接操作系统的内核Kernel,只能通过Shell去操作,Shell ...
- 【Java千问】你了解代理模式吗?
代理模式详解 1 什么是代理模式? 一句话描述:代理模式是一种使用代理对象来执行目标对象的方法并在代理对象中增强目标对象方法的一种设计模式. 详细描述: 1.理论基础-代理模式是设计原则中的“开闭原则 ...
- LeetCode 176. 第二高的薪水(MySQL版)
0.前言 最近刷LeetCode 刷数据库题目 由于数据库课上的是SQL,而MySQL有许多自己的函数的,怕把刚学会的函数忘记 特在此记录! 1.题目 编写一个 SQL 查询,获取 Employee ...